$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 »
$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
,
У вас также есть то, что похоже на ошибки в именах полей.
Других решений пока нет …