Я пытаюсь выполнить агрегацию, используя этот массив:
[
[
'$match' => ['deck_id' => 18],
],
[
'$project' => [
'stack' => 1,
]
],
[
'$unwind' => '$stack'
],
[
'$group' => [
'_id' => '$stack.response',
'responses' => [
'$push' => '$$ROOT.stack'
]
]
],
[
'$project' => [
'responses_count' => ['$size' => '$responses']
]
]
]
Но я получаю следующее исключение:
Нераспознанное имя этапа конвейера: '$ unwind'
Я также создал проблему в GitHub с этой ошибкой. Я использую mongodb 4 и последнее расширение mongodb от pecl.
https://github.com/mongodb/mongo-php-driver/issues/935
Следующий запрос работает без ошибок, например, на клиентах Mongo, но не на PHP:
db.getCollection('game_statistics').aggregate([
{$match: {deck_id: 18}},
{$project: {stack: 1}},
{$unwind: "$stack"},
{$group: {_id: "$stack.response", responses: {$push: "$$ROOT.stack"}}},
{$project: {responses_count: {'$size': "$responses"}}}
])