MongoDB:“不支持的投影选项:pop:{$ gt:0.0}”(调试)

时间:2017-05-04 21:03:58

标签: mongodb

我正在尝试运行此查询:

function q4() {
  var a4 = document.getElementsByName('q4');
  var correctAnswers = 0; // declare and initialize `correctAnswers`
  for (var i = 0; i < a4.length; i++) { // declare `i`
    if (a4[i].checked) {
      if (a4[i].value == "a" || a4[i].value == "d") {
        correctAnswers++;
      }
    }
  }
  if (correctAnswers == 2) {
    console.log("Correct!");
  } else {
    console.log("Incorrect");
  }
}

但我一直收到这个错误:

<div class="question-box">
  <div class="question">
    <h3>Question Four: Identify two output devices from the images.</h3>
  </div>
  <div class="answers">
    <input type="checkbox" name="q4" value="a">A)&nbsp;<img src="imgs/printer.jpg" alt="question image"><br/>
    <input type="checkbox" name="q4" value="b">B)&nbsp;<img src="imgs/keyboard.jpg" alt="question image"><br/>
    <input type="checkbox" name="q4" value="c">C)&nbsp;<img src="imgs/scanner.jpg" alt="question image"><br/>
    <input type="checkbox" name="q4" value="d">D)&nbsp;<img src="imgs/speakers.jpg" alt="question image"><br/>
  </div>
  <br>
  <input type="button" name="submit" value="Check Answer" onclick="q4()">
  <h3 id="Answer4">&nbsp;</h3>
</div>

当我运行此查询时,它完美运行:

db.zips.find({"state":"GA"}, {"pop":{$gt:0}}).sort({pop:1}).limit(5)

我正在尝试找到“state”=“GA”的字段,然后“pop”大于0的字段,并将其限制为5个结果并按升序排序。

当我将"errmsg" : "Unsupported projection option: pop: { $gt: 0.0 }" 部分作为查找函数中的第一个参数时,它会运行,但它忽略了我只希望状态等于“GA”的事实。我不知道如何解决这个问题,有谁知道什么是错的?

1 个答案:

答案 0 :(得分:7)

Mongodb的find函数有两个参数,查询和投影。您要触发的查询有两个对象,第二个被视为投影条件。

您的query应该在单个对象中保留所有条件。

db.zips.find({
               "state":"GA", 
               "pop":{$gt:0}
            })
       .sort({pop:1})
       .limit(5)