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

Getting all objects from array with specific property in Mongoose

本文关键字:获取 数组 对象 Mongoose 属性      更新时间:2023-09-26

如果我有这个模式

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

每个最喜欢的食物元素都是这样的对象

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);
})