Моя проблема заключается в том, что мне нужно выразить условие в конвейере агрегации Монго в формате ((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'
ключ используется дважды в одном массиве. Кто-нибудь знает способ сказать Монго, как сделать это логическое выражение? Возможно, способ переписать его или другой способ перевести его в булеву структуру Монго.
Это не правильный синтаксис. $or
а также $and
взять массивы:
((A && B) || (C && D)) ==>
{ "$or" : [{ "$and" : [A, B] }, { "$and" : [C, D] }] }
Других решений пока нет …