2016-09-08 44 views
0

我是節點js中的新手,我需要查詢我的節點js腳本,以便它從我的MongoDB返回查詢項目。 我在做什麼,我使用特定questionId節點JS這比分是1比內MongoDB的數據存儲在陣列形式應用的查詢, 使查詢將返回唯一的比分的1 questionId沒有進球的0節點js查詢mongodb中的數組項目

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

我試過的節點js代碼查詢是 我試過了兩個查詢,但是他們返回所有數組項目 query = {'question.score':1}; query = {'question':{$ eq:{'score':1}}};

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

我使用這個查詢,以便它返回迴應只有「questionId」:「57ce608e2a0d6cad8c48ef8f」,但它返回數組中的所有項目。

+1

由於array * question *是文檔的一個字段,您將始終獲取所有內容。你不能用簡單的查詢來實現這一點,而是嘗試使用* agregation * [documentation](https://docs.mongodb.com/manual/aggregation/) –

+0

你可以在[here](http: //stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array-in-mongodb-collection)。 –

回答

0

這會爲你工作:

db.getCollection( '測試') .aggregate([{$放鬆: 「$問題」}, {$匹配:{ 「question.score」:1}}]);