Как выразить условие в трубопроводе Монго с несколькими $ и на одном уровне

Моя проблема заключается в том, что мне нужно выразить условие в конвейере агрегации Монго в формате ((A&B)||(C&D)) который, когда вы записываете его в формате, в котором Монго записывает свои логические выражения в выходах {$or: {$and: {A, B}, $and: {C ,D}}, Проблема в том, что вы не можете иметь два элемента с одинаковым ключом в одном массиве. В частности, я использую плагин Mongo для PHP, поэтому мой формат выглядит примерно так:

array('$or' =>
array(
'$and' => array(
A,
B
),
'$and' => array(
C,
D
)
)
);

Опять же, это не массив, который может существовать, потому что '$and' ключ используется дважды в одном массиве. Кто-нибудь знает способ сказать Монго, как сделать это логическое выражение? Возможно, способ переписать его или другой способ перевести его в булеву структуру Монго.

0

Решение

Это не правильный синтаксис. $or а также $and взять массивы:

((A && B) || (C && D)) ==>
{ "$or" : [{ "$and" : [A, B] }, { "$and" : [C, D] }] }
1

Другие решения

Других решений пока нет …