Mongo $或同时使用$ exists和$ eq进行查询

时间:2019-09-04 22:01:02

标签: node.js mongodb mongoose

假设我有一个猫鼬模式,如下所示:

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的查询工作正常。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我可能是错的,但我认为这些不是有效的表达方式。尝试以下方法:

{
    category: 'some_category',
    $or: [
        { doSomething: { $exists: false } },
        { doSomething: false }
    ]
}