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

标签 mongodb mongodb-query bulk

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

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

最佳答案

是的,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 在一次往返中执行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52913008/

相关文章:

meteor - 如何在 meteor 中使用 rawCollection 进行聚合?

node.js - gcloud 应用部署时出错

mongodb - 只用 Mongodb 和 Golang 返回查找的文档

node.js - 如何让函数调用等待另一个函数调用完成

mongodb - 如何计算匹配的数组元素

MongoDB "count"使用 "$in"变得太慢

node.js - 如何让heroku使用DB的环境配置

python - 更新嵌入式 Mongo 文档 - Mongoengine

java - 使用 Java 和 CQLSSTableWriter 将大行数据加载到 Cassandra 中

api - 使用经过身份验证的连接器 (import.io) 批量提取