0

嗨,我想将过滤器设置为 mongodb 上的集合。

我想做设置过滤器(代码字段以“0”或“2”开头)和(FirmId eq到“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/
        }
    ]
}
4

2 回答 2

1

你不应该在这里使用任何$and一个$or

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

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

于 2013-09-04T07:45:20.213 回答
1

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

以下查询应该有效:

{
    "FirmId": ObjectId("5186224fdff7421bd4552f7f"),
    "$or": [
        {
            "Code": /^0/
        },
        {
            "Code": /^2/
        }
    ]
}
于 2013-09-04T07:33:46.850 回答