混合 $in 和 $or mongo 搜索操作

mixing $in and $or mongo search operations

各位, 我正在尝试混合使用 $all$nin mongodb 2.6 查询参数。以这种方式混合 $or$all$nin 允许吗?

本质上,我们在这里要检索的是具有 ['foo','bar']...OR 而没有 ['baz']

的文档

查询:

{
    "_type": {
        "$in": [
            "A"
        ]
    },
    "tags": {
        "$or": [
            {
                "$all": [
                    "foo","bar"
                ]
            },
            {
                "$nin": [
                    "baz"
                ]
            }
        ]
    }
}

错误:

HCError: (HCError) error converting cursor to array | caused by: MongoError: Can't canonicalize query: BadValue unknown operator: $or

错误是因为 $or 没有作用于其父级的字段,而是期望整个 "query document" 作为其子级:

{
    "_type": {
        "$in": [
            "A"
        ]
    },
    "$or": [
        { "tags": { "$all": [ "foo","bar"] } },
        { "tags": { "$nin": [ "baz" ] } }
    ]
}