从Mongoose中具有特定属性的数组中获取所有对象

时间:2014-11-24 23:22:36

标签: javascript mongoose

如果我有这个架构

food = {
    name : String,
    favouriteFoods : []
}

并且每个favoritefood元素都是这样的对象

var favoritefood = new Object;
favoritefood.cuisine = 'indian';
favoritefood.flavor = 'spicy';

是否可以查询mongoose以获取所有喜欢的食物对象将其flavor属性设置为“辣”?

1 个答案:

答案 0 :(得分:0)

您需要执行aggregate操作,以便按名称分组所有辛辣的食物。

  • Match所有食品,至少有一种辛辣的食物。
  • Unwind最喜欢的食物阵列。
  • Match所有不喜欢的食物都很辣。
  • 食物名称
  • Group
  • Project他们。

守则:

Food.aggregate([
{$match:{"favouriteFoods.flavor":"spicy"}},
{$unwind:"$favouriteFoods"},
{$match:{"favouriteFoods.flavor":"spicy"}},
{$group:{"_id":"$name","spicyFoods":{$push:"$favouriteFoods"}},
{$project:{"_id":0,"name":"$_id","spicyFoods":1}}
],function(err,res){
// console.log(res);
})