【问题标题】:Mongodb execute multiple queries in one round tripMongodb 一次往返执行多个查询
【发布时间】:2019-03-25 13:32:29
【问题描述】:

有没有类似 elasticsearch Multi Search API 的东西? 链接是:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html

考虑我有多个查询,我想将这些查询提供给 mongo 并按顺序获取结果。

【问题讨论】:

    标签: mongodb mongodb-query bulk


    【解决方案1】:

    是的,MongoDB 中也有类似的东西。使用聚合框架,您可以在 $facet 阶段内定义多个聚合管道。

    试试:

    db.col.save({a:1})
    db.col.save({a:2})
    
    
    db.col.aggregate([
        {
            $facet: {
                query1: [ { $match: { a:1 } }, { $project: { _id: 0 } } ],
                query2: [ { $match: { a:2 } }, { $project: { _id: 0 } } ],
            }
        }
    ])
    

    哪个打印:

    { "query1" : [ { "a" : 1 } ], "query2" : [ { "a" : 2 } ] }
    

    使用$facet,您必须记住单个 BSON 文档的大小不能超过 16 MB。更多关于聚合限制here

    【讨论】:

    • 请注意,如果您需要为此查询提供提示,这只能在 MongoDB 版本 3.6 或更高版本中实现
    • 为了澄清,您可能需要提供一个提示,否则 mongo 可能不会使用索引,原因是:jira.mongodb.org/browse/SERVER-30474
    • 感谢@Joe 的评论
    猜你喜欢
    • 2011-01-21
    • 2016-07-10
    • 2017-07-11
    • 1970-01-01
    • 2013-10-20
    • 2011-10-07
    • 1970-01-01
    • 2016-01-17
    • 2011-09-24
    相关资源
    最近更新 更多