【问题标题】:how i get single field value from mongodb collections using node js我如何使用节点 js 从 mongodb 集合中获取单个字段值
【发布时间】:2025-11-22 07:10:01
【问题描述】:

我正在尝试从我的集合级别中查找单个字段值。但是当我安慰它时,它给出了一个未定义的结果。我也调试了这行代码,但它在节点检查器中给出了一个错误“Runtime.getProperties failed. Internal error: TypeError: Cannot read property 'getters' of undefined”。 我不明白发生了什么以及如何从我的关卡集合字段中获取我的单个值。 我要求仅从级别架构 level_num 字段中获取单个值

1)。这是我的节点 js

  this.levelChange = function(req, res, next){

  try{

    var query = {age:5};
    QuizLevel.find(query).exec(function(err, result){
      if(err) return next(err);
      var a = result.min_score;
      console.log(a);
      res.send(a);
    });
        }catch(err){
            console.log("You have error in you code");
            return next(err);
        }
    }; 

2)。这是我的关卡架构

{
     //_id:{type:String},
     age:{type:Number},
     level_num:{type:Number},
     min_score:{type:Number},
     max_questions:{type:Number}
     }

3)。控制台输出

undefined

4)。这是我的 JSON 数据

{
"age":5,
"level_num":1,
"min_score":10,
"max_questions":30
}
{
"age":5,
"level_num":2,
"min_score":12,
"max_questions":33
}

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    替换

    var a = result.min_score;
    

    var a = result[0].min_score;
    

    find 返回一个集合。如果您只想要一条记录,请尝试

    QuizLevel.findOne(query)
    

    【讨论】:

    • 我也有同样的问题。使用 findOne 我没有得到价值?
    • Athi,我会验证我的查询是否正在返回结果。在 mongo shell、mongodb compass 或任何其他测试工具中测试查询
    • 我使用 toObject() 得到它
    【解决方案2】:

    实际上 'find()' 返回一个数组而不是一个对象。所以只需将代码var a = result[0].min_score; 替换为var a = result[0].min_score;

    否则,您可以使用以下代码获取年龄=5 的所有“min_scores”

    this.levelChange = function(req, res, next){
      try {
        var query = {age:5};
        QuizLevel.find(query,{min_score:1}).exec(function(err, result){
          if(err) return next(err);
          var a = result;
          console.log(a);
          res.send(a);
        });
      }
      catch(err){
         console.log("You have error in you code");
          return next(err);
       }
    };
    

    【讨论】:

      最近更新 更多