Mongoose 查询布尔字段

Sta*_*ver 6 mongoose mongodb node.js

要查询布尔字段,我必须使用“false”而不是 false。我将 Mongoose 与 Node JS 一起使用。

Mongodb 架构定义:

var MySchema = new mongoose.Schema({
    isPrivate: { type: Boolean, default: false }
})
db.model('MyModel', MySchema);
Run Code Online (Sandbox Code Playgroud)

询问:

MyModel.find({ isPrivate: false })
Run Code Online (Sandbox Code Playgroud)

上面的查询不返回任何数据集,而下面的代码则返回任何数据集。

MyModel.find({ isPrivate: "false" })
Run Code Online (Sandbox Code Playgroud)

请帮忙。

Yog*_*esh 5

根据您的模型,您应该首先更新您的文档以更改"false"false使用如下更新方法:

MyModel.update({},{"$set":{"isPrivate":false}},{ multi: true })
Run Code Online (Sandbox Code Playgroud)

如果您不习惯更新文档那么您应该$or or $in这样使用

MyModel.find({ $or:[ {'isPrivate':"false"}, {'isPrivate':false} ]})

MyModel.find({ "isPrivate": { "$in": ["false",false] } })
Run Code Online (Sandbox Code Playgroud)