2017-04-12 3 views
1

私は自分のデータベース文書に特定のエントリを見つけようとしています。 itemsオブジェクトが返されるようにしたいと思います。これは、文書構造である:Mongodb findOneオブジェクトを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" 
} 

答えて

3

はこれを試してみてください:

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については、配列の内容をクエリ結果から制限し、クエリドキュメントと一致する要素を返す方法について詳しく知りたい場合は、$(positional) operatorを参照してください。

+1

ありがとうございます。ええ、私が必要としていたように正確に機能Mongodbは、MySQLスタイルのクエリと比べて習得が難しいです。私はポジションオペレータに読書をします。 もう一度おねがいします –

関連する問題