代码之家  ›  专栏  ›  技术社区  ›  Majid Abdolhosseini

MongoDB一次往返执行多个查询

  •  2
  • Majid Abdolhosseini  · 技术社区  · 7 年前

    有什么像ElasticSearch多搜索API的吗? 链接是: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html .

    假设我有多个查询,我想把这些查询交给mongo并按顺序得到结果。

    1 回复  |  直到 7 年前
        1
  •  2
  •   mickl    7 年前

    是的,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