我的问题是,我需要用((A&B)||(C&D))
格式在Mongo聚合管道中表达一个条件,当你用Mongo编写的格式写出它时,它的布尔表达式会产生{$or: {$and: {A, B}, $and: {C ,D}}
。这样做的问题是,在同一个数组中不能有两个具有相同键的元素。更具体地说,我使用的是PHP的Mongo插件,所以我的格式实际上看起来有点像
array('$or' =>
array(
'$and' => array(
A,
B
),
'$and' => array(
C,
D
)
)
);
同样,这不是一个可以存在的数组,因为'$and'
键在同一个数组中被使用了两次。有人知道如何告诉mongo如何做这个布尔表达式吗?可能是重写它的一种方式,也可能是将它转换为Mongo的布尔结构的另一种方式。
这不是正确的语法。$or
和$and
获取阵列:
((A && B) || (C && D)) ==>
{ "$or" : [{ "$and" : [A, B] }, { "$and" : [C, D] }] }