MongoDB 执行多个查询需要在一个网络请求中完成

12
1个回答

17

是的,在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文档不能超过16MB。有关聚合限制的更多信息请参阅此处


请注意,如果您需要为此查询提供提示,则仅在MongoDB版本3.6或更高版本中才可能。 - Joe
2
为了澄清,您可能需要提供一些提示,否则由于 https://jira.mongodb.org/browse/SERVER-30474 ,Mongo 可能不会使用索引。 - Joe
感谢 @Joe 的评论。 - mickl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接