Mongoose查找默认值

4

我有一个mongoose模型:(包含一个具有默认值的字段)

var MySchema= new mongoose.Schema({
    name: { 
        type: String, 
        required: true
    },
    isClever: { 
        type: Boolean, 
        default: false 
    }
});

我可以通过保存名称来保存这种类型的模型,在mongoDB中,文档中只能看到名称(而不是isClever字段)。这很好,因为默认值发生在mongoose级别上。(?)

然后我的问题是,当尝试仅检索名为john且isClever = false的人时:

MySchema.find({
    'name' : 'john', 
    'isClever': false
}).exec( function(err, person) {
        // person is always null
});

它总是返回null。这与mongoose中默认值的工作方式有关吗?我们不能匹配默认值吗?
1个回答

10

根据Mongoose文档,当构建文档结构时应用默认值。

当执行find查询时,如果还没有构建文档,则将其传递给Mongo。Mongo不知道默认值,因此由于没有明确设置isClevertrue的文档,结果为空输出。

要使您的示例正常工作,应将代码更改为:

MySchema.find({ 
    'name' : 'john', 
    'isClever': {
        $ne: true
    }
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接