Mongodb 在一次往返中执行多个查询
Mongodb execute multiple queries in one round trip
有没有类似 elasticsearch Multi Search API 的东西?
link 是: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
有没有类似 elasticsearch Multi Search API 的东西? link 是: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