Mongodb一次往返执行多个查询

时间:2018-10-21 07:25:52

标签: mongodb mongodb-query bulk

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

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

1 个答案:

答案 0 :(得分:2)

是的,MongoDB中有类似的东西。使用Aggregation Framework,您可以在$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