我有一个包含产品(对象)的数组。它看起来像:
{{1}}
来自客户的请求
{{1}}
如何在mongo中进行聚合以获得具有品牌=' Eleaf' 和颜色=红色根据要求?
有人可以帮忙吗?
答案 0 :(得分:1)
find
,bgraham的答案是完全正确的。要在聚合管道中执行相同的操作,请使用$match,例如:
db.aggregate([{$match:{
category: "Vape",
$and: [
{ property: { $elemMatch: { key: "brand", value: "Eleaf" },
{ property: { $elemMatch: { key: "color", value: "red" }
]
}}])
然后,您可以将所需的任何其他管道阶段添加到数组中。
答案 1 :(得分:0)
我认为这应该可以解决问题:
db.products.find({
category: "Vape",
$and: [
{ property: { $elemMatch: { key: "brand", value: "Eleaf1" },
{ property: { $elemMatch: { key: "color", value: "red" }
]})
我不确定您的数据结构是最佳做法。如果它们被称为"品牌"可能更容易。值为"颜色"而不是键/值对。