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

时间:2015-03-12 23:14:45

标签: mongodb mongodb-query

民间,   我想尝试混合$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

1 个答案:

答案 0 :(得分:2)

错误是因为$or不会对其父级的字段起作用,而是期望整个“查询文档”成为它的子级:

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