使用节点js在mongodb中过滤

大家好,我试图find特定的数据使用filter,但我不知道我们如何设置或使用filter和它的属性。我已经存储了1分为真,0为假。 当我下一次打电话问题时,​​我想要过滤分数问题。 所以第0号问题将被显示在浏览器上,而不是一个

1)。这是我存储问题ID,每个问题的得分和时间的模式

child:{ quiz: questionId:{type:String}, score:{type:Number}, time:{type:String} } } 

2)。 这是问题模式

  _id:{type:String}, question:{type:String}, answer:{type:String} 

3)。 这是我的节点js代码用来获取和设置filter其实我没有得到我们如何设置filter的想法,以便下次我只调用API 0 score id问题将出现在我的浏览器,而不是1

  var childinfo = require('../models/child.js'); var childquestion = require('../models/question.js'); this.filter = function(req, res, next){ async.waterfall({ function(callback){ try{ var query = {child.quiz.score:1}; var projection = ''; childinfo.find(query,function(err,data){ if(err) return next(err); callback(null, data) }); } catch(err){ console.log(err); return next(err); } }, function(callback, data){ try{ var childq = new childquestion(); var query = {data.child.quiz.questionId === childq._id}; var projection = ''; childquestion.filter(query,projection) .skip() .exec(function(err,data){ if (err) return next(err); res.send(data); }); } catch(err){ console.log('Error While Saving the result ' +err); return next(err); } } }); } 

在MongoDB中嵌套字段的查询可以这样写:

 childinfo.find({"child.quiz.score": 1},function(err,data){ .. }) 

你应该引用这些字段并使用:而不是==。 所以你的代码应该是:

  var childinfo = require('../models/child.js'); var childquestion = require('../models/question.js'); this.filter = function(req, res, next){ async.waterfall({ function(callback){ try{ var query = { "child.quiz.score" : 1 }; var projection = ''; childinfo.find(query,function(err,data){ if(err) return next(err); callback(null, data) }); } catch(err){ console.log(err); return next(err); } }, function(callback, data){ try{ var childq = new childquestion(); var query = {"data.child.quiz.questionId":childq._id}; var projection = ''; childquestion.find(query,projection) .skip() .exec(function(err,data){ if (err) return next(err); res.send(data); }); } catch(err){ console.log('Error While Saving the result ' +err); return next(err); } } }); } 

编辑:代码编辑