2016-09-08 4 views
0

私はノードjsで新しく、私のMongoDBからクエリ項目を返すように、ノードjsスクリプトのクエリが必要です。 は、私は私はMongoDBのデータ内の1は、アレイ状に保存されているスコア特定questionIdのノードのJSを使用してクエリを適用し、何をやって、 ので、そのクエリは、スコアの1 questionIdはないのスコアを返します0mongodbの配列項目のノードjsクエリ

{ 
"_id": "57cfc7b86f0e51ee17d4c512", 
"question": [ 
     { 
     "questionId": "57ce608e2a0d6cad8c48ef8f", 
     "score": 1, 
     }, 
     { 
     "questionId": "57ce608e2a0d6cad8c48ef90", 
     "score": 0, 
     }, 
     { 
     "questionId": "57ce608e2a0d6cad8c48ef91", 
     "score": 0, 
     } 
] 
} 

私が適用しているノードjsコードクエリは です。私は2つのクエリを試しましたが、すべての配列アイテムを返します。 query = {'question.score':1}; query = {'質問':{$ eq:{'スコア':1}}};

function(){ 
      var query = {'question.score':1}; 
       childQuizInfo.findOne(query,function(err,data){ 
         if(err) return next(err); 
         res.send(data); 
         }); 
        } 

それが唯一の「questionId」応答を返すように、私はこのクエリを使用しています:「57ce608e2a0d6cad8c48ef8f」が、それは、配列のすべての項目を返します。

+1

配列* question *はドキュメントのフィールドなので、常にすべてのコンテンツが返されます。あなたは普通のクエリでこれを達成することができませんでした。代わりに*アグレージョ*を使用してみてください。[documentation](https://docs.mongodb.com/manual/aggregation/) –

+0

[こちら](http: //stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array-in-mongodb-collection)。 –

答えて

0

これはあなたのために動作します:

db.getCollection( 'テスト') .aggregate([{$ unwind: "$ question"}、 {$ match:{"question.score":1}}]);

関連する問題