【发布时间】:2013-04-09 15:48:01
【问题描述】:
是否可以编写包含 AND 子句的 OR 子句。
例如,我需要对字段 field1、field2、field3 和 field4 编写查询。
Query should be field1 or field2 or (filed3 and field4)
.
谁能帮帮我。
谢谢。
【问题讨论】:
标签: mongodb mongodb-php mongodb-query
是否可以编写包含 AND 子句的 OR 子句。
例如,我需要对字段 field1、field2、field3 和 field4 编写查询。
Query should be field1 or field2 or (filed3 and field4)
.
谁能帮帮我。
谢谢。
【问题讨论】:
标签: mongodb mongodb-php mongodb-query
下面是一个简单的查询示例,如果 field1 > 1 OR field2 > 1 OR fields 3 和 4 > 1,则该查询将匹配:
{
"$or" : [
{ "field1" : {"$gte" : 1} },
{ "field2" : {"$gte" : 1} },
{
"$and" : [
{ "field3" : {"$gte" : 1} },
{ "field3" : {"$gte" : 1} }
]
}
]
}
只需根据您的需要切换子查询。
【讨论】:
嗯,更简单的方法是:
{
"$or" : [
{ "field1" : {"$gte" : 1} },
{ "field2" : {"$gte" : 1} },
{ "field3" : {"$gte" : 1}, "field4" : {"$gte" : 1} }
]
}
这是因为单个$or 子句中的数组元素实际上是$and。这将比使用以不同方式评估的显式$and 更高效。
【讨论】: