Моя проблема в том, что мне нужно выразить условие в конвейере Mongo Aggregation в формате ((A&B)||(C&D))
который, когда вы записываете его в формате, который Mongo записывает в виде булевых выражений в yields {$or: {$and: {A, B}, $and: {C ,D}}
. Проблема заключается в том, что вы не можете иметь два элемента с одним и тем же ключом в одном массиве. Более конкретно, я использую плагин PHP Mongo, поэтому мой формат на самом деле выглядит примерно так:
array('$or' =>
array(
'$and' => array(
A,
B
),
'$and' => array(
C,
D
)
)
);
Опять же, это не массив, который может существовать, потому что ключ '$and'
используется дважды в одном массиве. Кто-нибудь знает способ сказать манго, как сделать это логическое выражение? Возможно, это способ переписать его или другой способ перевести его в логическую структуру Mongo.
Это не правильный синтаксис. $or
$and
принимать массивы:
((A && B) || (C && D)) ==>
{ "$or" : [{ "$and" : [A, B] }, { "$and" : [C, D] }] }