Mongodb 猫鼬{$exists:false}不工作,为什么?
我有以下疑问:Mongodb 猫鼬{$exists:false}不工作,为什么?,mongodb,mongoose,Mongodb,Mongoose,我有以下疑问: const messageRules = await MessageRule.findOne({ reservationLength: {$exists: false} }); 在以下架构上: const MessageRule = new Schema( { ..., reservationLength: {type: Number, default: 1}, ... } ); 查询将返回一个包含以下内
const messageRules = await MessageRule.findOne({
reservationLength: {$exists: false}
});
在以下架构上:
const MessageRule = new Schema(
{
...,
reservationLength: {type: Number, default: 1},
...
}
);
查询将返回一个包含以下内容的文档:
{
...,
reservationLength: 1,
...
}
我快疯了。它是否与我的模式中的默认设置有关?还有其他想法吗?这是一个我已经在猫鼬身上遇到过好几次的错误,我没有找到太多关于它的信息(当然我决定不浪费时间去探索它) 它与所有默认值字段一起出现,mongoose只是在返回调用中将这些值自动设置为默认值(如果您检查数据库中的实际文档,则不会设置此字段) 一个简单的解决方法是将lean()添加到调用中:
const messageRules = await MessageRule.findOne({
reservationLength: {$exists: false}
}).lean();
出于某种原因,这最终修复了错误(有争议的功能???根据mongoose findOne()文档
注意:条件是可选的,如果条件为null或未定义,mongoose将向MongoDB发送一个空的findOne命令,该命令将返回任意文档
。但我在这里看不到这一点。你每次都收到相同的文件吗?