簡體   English   中英

使用節點js在mongodb中過濾

[英]filter in mongodb using node js

大家好,我嘗試使用過濾器查找特定數據,但我不知道我們如何設置或使用過濾器及其屬性。我已將 1 分表示為真,0 分表示為假。 我希望下次我調用這個問題時,它會過濾分數問題。 這樣第 0 個 id 問題將顯示在瀏覽器上,而不是一個

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 代碼實際上我不知道我們如何設置過濾器,這樣下次我調用 API 時,我的瀏覽器上只會出現第 0 個分數 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); 
        }
    } 
   });
 } 

編輯:代碼編輯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM