如何在 Mongo 管道中用多个 $and 在同一级别表达条件

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

我的问题是我需要在 Mongo 聚合管道中以 ((A&B)||(C&D)) 格式表达一个条件,当你以 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] }] }