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

0

Моя проблема в том, что мне нужно выразить условие в конвейере 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.

Теги:
mongodb-query
aggregation-framework

1 ответ

1
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню