如果我有这个架构
food = {
name : String,
favouriteFoods : []
}
并且每个favoritefood元素都是这样的对象
var favoritefood = new Object;
favoritefood.cuisine = 'indian';
favoritefood.flavor = 'spicy';
是否可以查询mongoose以获取所有喜欢的食物对象将其flavor属性设置为“辣”?
答案 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);
})