如果我有这个架构
food = {
name : String,
favouriteFoods : []
}
每个favouritefood元素都是这样的对象
var favoritefood = new Object;
favoritefood.cuisine = 'indian';
favoritefood.flavor = 'spicy';
是否可以查询猫鼬来获取所有最喜欢的食物对象的风味属性设置为“辣”?
最佳答案
您需要执行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);
})