Я новичок в mongoDb и сталкивается с проблемой при использовании функции агрегата. Я пытаюсь получить сумму полей «ожидания» и «общий», но возвращает 0. Я также хочу взять общее количество комментариев, которые не являются пустыми или нулевыми в одном и том же запросе.MongoDb Проблема с функцией агрегации с php
$out = $collection->aggregate
(
array(
array('$match' => array('id' => 6200)),
array ('$unwind' => '$reviews'),
array('$group' => array('_id' => '$id',
'exptotal' => array('$sum' => array('reviews' => '$expectations')),
'total' => array('$sum' => array('reviews' => '$overall')),
'count' => array('$sum' => 1)
)
)
)
);
Вот JSON
{
"_id": "528c62406a542f7c6a6bf522",
"id": 6200,
"categories": [
{
"id": 6,
"name": "Artificial Intelligence"
},
{
"id": 5,
"name": "Statistics and Data Analysis"
}
],
"courseId": "COURSE_16",
"institute": {
"id": 5693,
"name": "YZ University"
},
"instructors": [
" A Morris"
],
"language": "en",
"reviews": [
{
"username": "kalis",
"expectations": 3,
"content": 2,
"overall": 3,
"comments": "This is really good course for improvement",
"datecreated": "2013-11-02T17:04:11.102Z"
},
{
"username": "julia",
"expectations": 4,
"content": 2,
"overall": 2,
"comments": "This improves my skill a lot",
"datecreated": "2013-11-03T17:04:11.102Z"
},
{
"username": "john",
"expectations": 2,
"content": 4,
"overall": 4,
"comments": "",
"datecreated": "2013-11-04T17:04:11.102Z"
}
],
"shortName": "ml",
"title": "Machine Learning"
}
Спасибо, что сработало отлично !. Также, если я хочу взять общее количество комментариев, которые не являются пустыми или нулевыми в одном запросе? –
@MarkGreen Вы можете сделать два раза, ваш образец не отображает поле комментариев, поэтому я догадываюсь, но если вы сделаете два раза, он будет эффективно раскручивать оба фила для вас, а затем вы сможете подвести итог двум частям , – Sammaye
@MarkGreen добавил что-то из образца – Sammaye