Mongodb findOne对象按数组排列

我试图find一个特定的条目,我的数据库文件的用户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,date,然后select的餐点和项目进行search。 即时获取返回的是整个膳食数组,但我只想食物项目对象返回。

 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

阅读有关$(位置)运算符的详细信息,以了解有关从查询结果限制数组内容以及返回与查询文档匹配的元素的更多信息。