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

标签 javascript mongoose

如果我有这个架构

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

每个 favoritefood 元素都是一个像这样的对象

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

是否可以查询 mongoose 来获取所有 favoritefood 对象的 flavor 属性设置为“辣”?

最佳答案

您需要执行聚合操作才能将所有最喜欢的辛辣食物按名称分组。

  • 匹配所有食物,至少有一种最喜欢的辛辣食物。
  • 展开最爱的食物阵列。
  • 匹配所有最喜欢的辛辣食物。
  • 按食物名称分组
  • 项目它们。

代码:

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

关于javascript - 从 Mongoose 中具有特定属性的数组中获取所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27116069/

相关文章:

javascript - 如何使用 Javascript 从纹理图集中获取图像?

javascript - typescript :使用 Map<> with strictNullChecks

javascript - 将数组转换为数组的数组

node.js - 将字符串转换为日期并获取差异

javascript - 使用MongoDB分离不同的用户数据

node.js - 仅在 mongoose 中的填充数组中删除文档 objectid

javascript - 想要在 HTML 中有下拉菜单

javascript - 替换 Div 类内容时出现 JS 错误

node.js - Mongoose 自定义验证失败

MongoDB - 在 ObjectId 上聚合 $match