Mongodb 在一次往返中执行多个查询

mhn*_*dev 10 bulk mongodb mongodb-query

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

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

mic*_*ckl 13

是的,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 } } ],
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

打印:

{ "query1" : [ { "a" : 1 } ], "query2" : [ { "a" : 2 } ] }
Run Code Online (Sandbox Code Playgroud)

使用$facet时必须记住单个 BSON 文档不能超过 16 MB。更多关于聚合限制的信息在这里

  • 为了澄清,您可能需要提供提示,因为否则 mongo 可能不会使用索引,因为:https://jira.mongodb.org/browse/SERVER-30474 (2认同)