Почему количество моего приложения Meteor, превышающее ($ gt), отличается от количества оболочки mongdb?

#mongodb #meteor

#mongodb #метеор

Вопрос:

Вот мои входные и выходные данные в оболочке mongodb:

 meteor:PRIMARY> db.users.count({"profile.score": {$gt: 50}})
2
  

Вот мой код:

 var allUsers = Meteor.users.find();
var newCurrentRank = allUsers.count({"profile.score": {$gt: 50}});
console.log("newCurrentRank", newCurrentRank);
  

Вот моя консоль:

 I20161004-11:43:42.910(0)? newCurrentRank 12
  

Комментарии:

1. Всего в коллекции 12 пользователей.

Ответ №1:

Это потому count() , что метод в Meteor возвращает количество документов из курсора, которые соответствуют запросу. Сама по себе передача запроса в качестве аргумента не повлияет на количество. Следовательно, в вашем примере выше он возвращал все 12 документов, несмотря на передачу объекта запроса в качестве аргумента, счетчик основан на find() курсоре, который возвращает все документы в коллекции, поскольку он был вызван без какого-либо запроса.

Что вам нужно, так это вызвать find() курсор с объектом запроса, а затем вызвать count() метод:

 var newCurrentRank = Meteor.users.find({ "profile.score": { "$gt": 50 } }).count();
console.log("newCurrentRank", newCurrentRank);