Javascript 按id排列的数组中的Mongodb findOne对象

Javascript 按id排列的数组中的Mongodb findOne对象,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图通过用户id和所选字段和项目查找数据库文档的特定条目。我希望返回items对象。这是文档结构: { "_id": ObjectId("58edfea4b27fd0547375eeb4"), "user_id": ObjectId("58d2dd4c8207c28149dbc748"), "calories": 2000, "date": 20170312, "snacks": [ ], "dinner": [ { "nutrients": { "protein": "11.6

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

{
"_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、日期,然后是要搜索的选定食物和项目。我返回的是整个用餐数组,但是我只希望返回food items对象

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){
    ....
});
晚餐。$
将只返回符合条件的晚餐项目,即
晚餐的位置。名称:肉宴石烤比萨饼

阅读“关于”以了解有关限制查询结果中数组的内容以及返回与查询文档匹配的元素的更多信息。

尝试以下操作:

user_food.
findOne({
        user_id : req.session.user_id, 
        date: today,
        'dinner.name': 'Meat feast stone baked pizza'
    },{
        'dinner.$' : 1
},function(err, item){
    ....
});
晚餐。$
将只返回符合条件的晚餐项目,即
晚餐的位置。名称:肉宴石烤比萨饼


阅读“关于”了解更多有关从查询结果限制数组内容和返回与查询文档匹配的元素的信息。

谢谢。是的,这正是我所需要的。与MySQL风格的查询相比,Mongodb很难学习。我将给位置操作员一个读数。再次谢谢你,你这个善良的陌生人。是的,这正是我所需要的。与MySQL风格的查询相比,Mongodb很难学习。我将给位置操作员一个读数。再次感谢