почему boolean возвращает true в mongodb для следующего кода? - PullRequest
0 голосов
/ 24 июня 2018
{
    "_id" : ObjectId("5b2fa66ebd77e3f5fb61b048"),
    "name" : "rohit",
    "password" : "abc123"
}
{
    "_id" : ObjectId("5b2fa6d3bd77e3f5fb61b049"),
    "name" : "karan",
    "password" : "kar123"
}

это моя коллекция dong монго, названная как учетные данные

теперь, когда я запускаю команду

db.credentials.find({$and: [{'name':'rohit'},{'password':'abc12'}]}).pretty()

, это не возвращает никакого результата, так как условие не выполнено

Но

Boolean(db.credentials.find({$and: [{'name':'rohit'},{'password':'abc12'}]}))

это всегда возвращает истину.

нужна помощь, чтобы решить эту проблему ....

1 Ответ

0 голосов
/ 24 июня 2018

Проверьте документацию find в mongoDB

find () возвращает

  • [], пустой массив, если результатов не найдено // true
  • объект, если есть ровно 1 результат // true
  • [объект] массив объектов, когда много результатов // true

во вторую

db.credentials.find ({$ and: [{'name': 'rohit'}, {'password': 'abc12'}]}) возвращает обещание, которое всегда верно в логическом (если используется узел js )

Таким образом, всегда логическое значение истинно

Лучшая версия кода (оболочка монго):

var res = db.credentials.find({$and: [{'name':'rohit'},{'password':'abc12'}]})     
if(Array.isArray(res))
    res =[res]
Boolean(res.length)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...