在 MongoDB 中找到多个
Multiple find in MongoDB
我在 MongoDB 中收集了 items
和以下文件:
{ name: "A", value: 1 },
{ name: "B", value: 2 },
{ name: "C", value: 3 }
现在,我有几个过滤器,我想将它们应用于搜索匹配过滤器的第一个文档。有没有办法在一个查询中完成,或者我只需要重复 db.items.findOne()
?
我的过滤器是:
{ name: "B" }, // Matches second document.
{ value: 3 }, // Matches third document.
{ $or: [{name: "B"}, {"name": "C"}] } // Matches second document.
结果应该是(包括重复文档和正确顺序):
{ name: "B", value: 2 },
{ name: "C", value: 3 },
{ name: "B", value: 2 }
您可以使用 $facet 聚合。
使用此运算符,您可以一次 运行 多个查询,如下所示:playground
获得所需结果后,您可以使用 $project 和 $replaceRoot 根据需要映射文档。 Example
我在 MongoDB 中收集了 items
和以下文件:
{ name: "A", value: 1 },
{ name: "B", value: 2 },
{ name: "C", value: 3 }
现在,我有几个过滤器,我想将它们应用于搜索匹配过滤器的第一个文档。有没有办法在一个查询中完成,或者我只需要重复 db.items.findOne()
?
我的过滤器是:
{ name: "B" }, // Matches second document.
{ value: 3 }, // Matches third document.
{ $or: [{name: "B"}, {"name": "C"}] } // Matches second document.
结果应该是(包括重复文档和正确顺序):
{ name: "B", value: 2 },
{ name: "C", value: 3 },
{ name: "B", value: 2 }
您可以使用 $facet 聚合。
使用此运算符,您可以一次 运行 多个查询,如下所示:playground
获得所需结果后,您可以使用 $project 和 $replaceRoot 根据需要映射文档。 Example