为什么布尔在mongodb中为以下代码返回true?

时间:2018-06-24 14:55:08

标签: mongodb

{
    "_id" : ObjectId("5b2fa66ebd77e3f5fb61b048"),
    "name" : "rohit",
    "password" : "abc123"
}
{
    "_id" : ObjectId("5b2fa6d3bd77e3f5fb61b049"),
    "name" : "karan",
    "password" : "kar123"
}

这是我的mongo db集合,名为凭据

现在每当我运行命令

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

由于条件失败,这不会返回任何结果

但是

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

这总是返回true。

需要帮助解决此问题。...

1 个答案:

答案 0 :(得分:0)

检查mongoDB中find的文档

find()返回

  • [],如果未找到结果,则为空数组 // true
  • 对象是否有1个结果 // true
  • [object]对象数组,当有多个结果时 // true

第二次

db.credentials.find({$ and:[{'name':'rohit'},{'password':'abc12'}]})返回一个布尔值始终为true的promise(如果使用节点js )

因此,布尔值始终为true

更好的代码版本是(mongo shell):

var res = db.credentials.find({$and: [{'name':'rohit'},{'password':'abc12'}]})     
if(Array.isArray(res))
    res =[res]
Boolean(res.length)