2016-09-08 43 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}}]);