Mongoose查询布尔字段

时间:2015-08-25 17:12:22

标签: node.js mongodb mongoose

要查询布尔字段,我必须使用“false”而不是false。 我正在使用Mongoose和Node JS。

Mongodb架构定义:

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

查询:

MyModel.find({ isPrivate: false })

以上代码不会返回任何数据集。

MyModel.find({ isPrivate: "false" })

请帮忙。

2 个答案:

答案 0 :(得分:2)

根据您的模型,您应首先使用更新方法更新文档以将 DataSet Data = new DataSet(); SqlDataAdapter Adapter = new SqlDataAdapter(); SqlConnection Connection = new SqlConnection(); Connection.ConnectionString = StaticConnectionString; Adapter = new SqlDataAdapter("Select * FROM Parameters WHERE ID='"+ID+"'",Connection); Adapter.Fill(Data); DataList.Add(Data); 更改为"false"

false

如果您不方便更新文档,那么您应该使用MyModel.update({},{"$set":{"isPrivate":false}},{ multi: true }) 这样的

$or or $in

答案 1 :(得分:0)

如果通过添加新路径来更新架构并使用该新架构创建新文档并将其存储在具有使用旧架构创建的旧文档的集合中,则会遇到此问题。就我而言,我向我的rated集合中添加了带有“ default”:false的布尔路径jobs,该集合已经有没有此字段的文档。当我在下面进行查找查询

Job.find({rated: false}, cb)

即使有rated: false的作业,查询也会返回一个空光标。

我只能通过跳到控制台并使用默认值rated来更新字段false的所有作业文档来解决该问题。之后,我的查询返回了与数据库一致的游标。