Неизвестное название этапа конвейера: '$ unwind'

Я пытаюсь выполнить агрегацию, используя этот массив:

[
            [
                '$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"}}}
])

person Filip    schedule 01.11.2018    source источник
comment
Итак, в первую очередь. Не тот драйвер. Прочтите документацию на официальном сайте, в которой четко указано, что это такое и где вы установить его из. Кроме того, MongoDB имеет систему JIRA для всех ошибок, и любые официальные репозитории на GitHub фактически не открыты для размещения проблем.   -  person Neil Lunn    schedule 01.11.2018
comment
? Это не тот драйвер!   -  person Filip    schedule 01.11.2018
comment
У меня оба установлены, пожалуйста, не думайте, что я новичок :) Я старший и использую LIB через композитор. Вот откуда исходит исключение ... Вы вообще знакомы с расширением и библиотекой PHP?   -  person Filip    schedule 01.11.2018
comment
Установленная версия расширения: 1.5.3, установленная версия библиотеки: 1.4.2   -  person Filip    schedule 01.11.2018
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Filip    schedule 01.11.2018
comment
Об этой проблеме также сообщалось в системе отслеживания проблем MongoDB JIRA: PHPLIB-396. Ошибка оказалась результатом ложных символов UTF-8 в скрипте PHP; удаление этих символов позволяет сценарию работать должным образом.   -  person Stennie    schedule 02.11.2018


Ответы (1)


Проблема была на моей стороне. Несмотря на то, что код был правильным, в ключах или значениях массива, которые учитывал драйвер, была серия невидимых символов UTF8. Открытие этого файла с помощью VIM позволило мне увидеть эти символы, и их удаление сработало. https://jira.mongodb.org/browse/PHPLIB-396

person Filip    schedule 02.11.2018