MongoDB在同一查询中使用$和$或运算符

时间:2013-09-04 07:29:01

标签: mongodb

您好我想在mongodb上设置过滤器到集合。

我想设置过滤器(代码字段以“0”或“2”开头)和(FirmId eq to“5186224fdff7421bd4552f7f”)

但查询结果为空。有什么问题?

我的mongo查询是;

db.Customers.find({ "$and" : [{ "FirmId" : ObjectId("5186224fdff7421bd4552f7f") }, { "$or" : [{ "Code" : /^0/ }, { "Code" : /^2/ }] }] })

_

 {
    $and: [
        {
            "FirmId": ObjectId("5186224fdff7421bd4552f7f")
        },
        {
           "$or": [
                {
                    "Code": /^0/
                },
                {
                    "Code": /^2/
                }
            ]
        }
    ]
}

或使用

{
    "FirmId": ObjectId("5186224fdff7421bd4552f7f"),
    "$or": [
        {
            "Code": /^0/
        },
        {
            "Code": /^2/
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

在这种情况下,您不需要指定全局$and,最外层的对象就像有一个一样。

以下查询应该有效:

{
    "FirmId": ObjectId("5186224fdff7421bd4552f7f"),
    "$or": [
        {
            "Code": /^0/
        },
        {
            "Code": /^2/
        }
    ]
}

答案 1 :(得分:1)

您不应在此使用$and$or

{ FirmId: ObjectId("xxx"), Code:/^[02]/ }

如果您没有得到任何结果,则可能没有符合此条件的记录。