我该怎么做聚合?

时间:2017-10-04 20:03:59

标签: javascript mongodb

我有一个包含产品(对象)的数组。它看起来像:

{{1}}

来自客户的请求

{{1}}

如何在mongo中进行聚合以获得具有品牌=' Eleaf' 和颜色=红色根据要求?

有人可以帮忙吗?

2 个答案:

答案 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" } 
    ]})

我不确定您的数据结构是最佳做法。如果它们被称为"品牌"可能更容易。值为"颜色"而不是键/值对。