Как вычесть в mongodb переполнение стека

 $getdataPipeline = array(
array(
'$match' => array(
'project_id' => array('$in' => $mysql_project_id) // Validating project ID
),
'$match' => array('project_id' => $project_id)
),
array(
'$group' => array(
'_id' => array('pro_id' => '$project_id', 'uid' => '$user_id'),
"wh" => array('$subtract' => array(array('$sum' => '$toltal_timein_minutes'), array('$sum' => '$holding_durationin_minutes')))

))
);

Запущенный запрос:

  $ValidProjectIdInMongo = $collection->aggregate($getdataPipeline);

Я получаю ошибку как

Uncaught исключение ‘MongoResultException’ с сообщением ‘localhost: 27017: исключение: неизвестный оператор группы’ $ subtract »

1

Решение

$sum аккумулятор для использования с $group, так что это должен быть оператор верхнего уровня. Поэтому ваши другие операции должны происходить «внутри» $sum:

$getdataPipeline = array(
array(
'$match' => array('project_id' => $project_id)
),
array(
'$group' => array(
'_id' => array('pro_id' => '$project_id', 'uid' => '$user_id'),
"wh" => array(
'$sum' => array(
'$subtract' => array(
'$toltal_timein_minutes',
'$holding_durationin_minutes'
)
)
)
)
)
);

Вы можете сделать это здесь, потому что это основное вычитание, но более сложные операции обычно требуют отдельного $project этап после $group,

Также обратите внимание, что вы $match Стадия конвейера неверна и будет интерпретироваться так же, как я переписал выше. Вы, возможно, имеете в виду в $in условие для обоих возможных значений, что является логическим $or,

У вас также есть то, что похоже на ошибки в именах полей.

3

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector