MongoDB $ вычитание в $ redact throwing ‘объект уже является операторным выражением’ Ошибка

У меня странная ошибка, когда я пытаюсь выполнить общий запрос с вычитанием.

С запросом ниже:

$ops = array(

array(
'$redact' => array(
'$cond' => array(
'if' => array(
'$gte' => array('$subtract' => array(20 ,10), 10)
),
'then' => '$$KEEP',
'else' => '$$PRUNE'
)
)
)
);

$results = $collection ->aggregate($ops);

Логически, это должно вычесть 20 — 10, и сравнение, если результат больше или равен 10. Проблема в том, что он выдает эту ошибку:

MongoResultException: localhost: 27017: этот объект уже
выражение оператора, и не может использоваться как выражение документа (в
‘0’)

Теперь, когда я удаляю $ subtract и запускаю это:

$ops = array(
array(
'$redact' => array(
'$cond' => array(
'if' => array(
'$gte' => array(10,10)
),
'then' => '$$KEEP',
'else' => '$$PRUNE'
)
)
)
);

Это сравнение, если 10 больше 10, который работает без ошибок. Так почему же $ subtract вызывает указанное выше сообщение об ошибке?

1

Решение

Ответ: вычитание $ должно быть заключено в массив.

'$gte' => array(array('$subtract' => array(20 ,10)), 10)
0

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

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

По вопросам рекламы [email protected]