javascript - Mongodb 通过 id 在数组中找到一个对象

标签 javascript node.js mongodb mongoose

我试图通过用户 ID 和选定的字段和项目找到我的数据库文档的特定条目。我希望返回项目对象。这是文档结构:

{
"_id": ObjectId("58edfea4b27fd0547375eeb4"),
"user_id": ObjectId("58d2dd4c8207c28149dbc748"),
"calories": 2000,
"date": 20170312,
"snacks": [ ],
"dinner": [
 {
  "nutrients": {
    "protein": "11.6",
    "carbs": "29.4",
    "fat": "7.9"
  },
  "servings": "75",
  "calories": 750,
  "name": "Meat feast stone baked pizza"
}, 
{
  "nutrients": {
    "protein": "6.8",
    "carbs": "54",
    "fat": "30.6"
  },
  "servings": "25",
  "calories": 550,
  "name": "Mc Coy's Cheddar and onion"
}],
"lunch": [],
"breakfast": [],
}

到目前为止,我所做的是获取用户 ID、日期,然后是要搜索的选定餐点和项目。我返回的是整个膳食数组,但我只想要返回食品对象。

user_food.findOne({user_id : req.session.user_id, date: today},{'dinner': 'Meat feast stone baked pizza'},function(err, item){
        if(err){
            console.log("something went wrong: " + err);
            return res.status(500).send(err);
        }
        else{
            console.log(item);
            return res.status(200).send(item);
        }
    });

我得到的返回是这样的:

"dinner": [
{
  "nutrients": {
    "protein": "11.6",
    "carbs": "29.4",
    "fat": "7.9"
  },
  "servings": "75",
  "calories": 750,
  "name": "Meat feast stone baked pizza"
}, 
{
  "nutrients": {
    "protein": "6.8",
    "carbs": "54",
    "fat": "30.6"
  },
  "servings": "25",
  "calories": 550,
  "name": "Mc Coy's Cheddar and onion"
}]

我想要的只是:

    {
  "nutrients": {
    "protein": "11.6",
    "carbs": "29.4",
    "fat": "7.9"
  },
  "servings": "75",
  "calories": 750,
  "name": "Meat feast stone baked pizza"
}

最佳答案

试试这个:

user_food.
findOne({
        user_id : req.session.user_id, 
        date: today,
        'dinner.name': 'Meat feast stone baked pizza'
    },{
        'dinner.$' : 1
},function(err, item){
    ....
});

dinner.$ 将只返回符合条件的晚餐项目,即 dinner.name : Meat feast stone baked pizza

了解 $(positional) operator了解有关从查询结果中限制数组内容并返回与查询文档匹配的元素的更多信息。

关于javascript - Mongodb 通过 id 在数组中找到一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43371632/

相关文章:

javascript - Json:编辑深度嵌套的值

javascript - FullPage.js - slider 每次自动滚动到顶部

javascript - 当 div 在 @media 屏幕中滚动时,如何在 @media print 中显示 div 的内容

javascript - 通过 Patch 方法更新 Yaml 文件不起作用

javascript - 与 npm install 集成

javascript - 在nodejs中转换为对象id时抛出错误

javascript - 从 laravel 到 vue.js 验证后如何显示数组响应的错误(基于索引)

sql - 扩展存储在数据库中的对象

mongodb - MongoDB 中的 $cmd 集合是什么?我该如何使用它?

javascript - 如何将总纳秒转换为 HH :MM:SS:ms:ns in JavaScript and node? 格式的字符串