这是我关于stackoverflow的第一个问题所以对法国新秀要宽容;) 我必须简化MongoDB查询,今天早上我在 docs.mongodb.org 上发现了这个工具,我真的需要了解继续自学的方法。
以下是查询:
{$ and:[{x:2},{y:3},{$ and:[{z:4}]},{$ or:[{name:{$ regex:“toto。“}},{name:{$ regex:”toto。“}}]}]}
由于
答案 0 :(得分:1)
基本上在SQL中它是:
x = 3 AND y = 3 AND z = 4 AND (name LIKE 'toto%' OR name LIKE 'toto%')
此查询可以大规模简化,我不确定您使用什么工具来获取此查询,但是,它可以归结为:
{x: 2, y: 3, z: 4, name: {$in: [/^toto.*/, /^toto.*/]}}
这是因为查询部分之间的默认运算符实际上是$and
所以在特定情况下你只需要$and
,即当你需要在字段中单独$and
两个子句时或需要$and
两个单独的$or
,逻辑上不能放在一起(出于某种原因)。
我应该注意,在某些驱动程序中,您需要将$in
替换为$or
,这取决于驱动程序中的构造,但BSON正则表达式对象(不是$regex
运算符)应该能够在$in
条款等中运作。