如何用多个$和';在Mongo管道中表达条件;s在同一水平上


How to express a condition in a Mongo Pipeline with multiple $and's on the same level

我的问题是,我需要用((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] }] }