假设我有一个猫鼬模式,如下所示:
const itemSchema = new Schema({
category: { type: String, required: false },
doSomething: { type: Boolean, required: false }
});
const Item = Mongoose.model('Item', itemSchema);
我要执行的查询是:
“查找类别为“ some_category”且doSomething等于false或为空的文档”
const query = {
category: 'some_category',
doSomething: { '$or': [{ '$eq': false }, { '$exists' : false }] }
};
Item.find(query);
但是,发现抛出错误:
Cast to Boolean failed for value "[ { '$eq': false }, { '$exists': false } ]" at path "doSomething" for model "Item"
我认为这是我使用$ or运算符的方式,但是我花了几个小时来忙于它,却一头雾水。 不使用$或$ eq或$ exists的查询工作正常。
有什么想法吗?
答案 0 :(得分:0)
我可能是错的,但我认为这些不是有效的表达方式。尝试以下方法:
{
category: 'some_category',
$or: [
{ doSomething: { $exists: false } },
{ doSomething: false }
]
}