Skip to content

Unrecognized pipeline stage name: '$unwind' #935

@filipac

Description

@filipac

Description

Hello,
I am trying to do an aggregation using this array:

[
            [
                '$match' => ['deck_id' => 18],
            ],
            [
                '$project' => [
                    'stack' => 1,
                ]
            ],
            [
                '$unwind' => '$stack'
            ],
            [
                '$group' => [
                    '_id' => '$stack.response',
                    'responses' => [
                        '$push' => '$$ROOT.stack'
                    ]
                ]
            ],
            [
                '$project' => [
                    'responses_count' => ['$size' => '$responses']
                ]
            ]
        ]

But I am getting the following exception:

Unrecognized pipeline stage name: '$unwind'

Environment

I am using macOS, php 7.2 and latest version of the driver from PECL. Mongodb server version is 4.0.

/usr/local/etc/php/7.2/conf.d/ext-mongodb.ini,
mongodb
libbson bundled version => 1.13.0
libmongoc bundled version => 1.13.0
libmongoc SSL => enabled
libmongoc SSL library => Secure Transport
libmongoc crypto => enabled
libmongoc crypto library => Common Crypto
libmongoc crypto system profile => disabled
libmongoc SASL => enabled
libmongoc ICU => disabled
libmongoc compression => enabled
libmongoc compression snappy => disabled
libmongoc compression zlib => enabled
mongodb.debug => no value => no value

Expected and Actual Behavior

I expect to get the results as I got in the mongodb client I use but instead aggregation using $unwind is not working. If I remove that stage, the query works without exception.

Debug Log

If the issue relates to internal driver behavior (e.g. connection issues),
please include a debug log. This may be generated by setting the mongodb.debug
INI option to "stderr" or a directory (useful for web SAPIs).

http://php.net/manual/en/mongodb.configuration.php#ini.mongodb.debug

2018-11-01 09:52:29] local.ERROR: Unrecognized pipeline stage name: '$unwind' {"exception":"[object] (MongoDB\\Driver\\Exception\\CommandException(code: 40324): Unrecognized pipeline stage name: '$unwind' at /Users/filipac/Code/fokus-backend/vendor/mongodb/mongodb/src/Operation/Aggregate.php:263)
[stacktrace]
#0 /Users/filipac/Code/fokus-backend/vendor/mongodb/mongodb/src/Operation/Aggregate.php(263): MongoDB\\Driver\\Server->executeReadWriteCommand('neurolingua', Object(MongoDB\\Driver\\Command), Array)
#1 /Users/filipac/Code/fokus-backend/vendor/mongodb/mongodb/src/Collection.php(223): MongoDB\\Operation\\Aggregate->execute(Object(MongoDB\\Driver\\Server))
#2 [internal function]: MongoDB\\Collection->aggregate(Array)
#3 /Users/filipac/Code/fokus-backend/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Collection.php(45): call_user_func_array(Array, Array)
#4 /Users/filipac/Code/fokus-backend/routes/web.php(86): Jenssegers\\Mongodb\\Collection->__call('aggregate', Array)
#5 [internal function]: Illuminate\\Routing\\Router->{closure}(Object(Jenssegers\\Mongodb\\Collection))
#6 /Users/filipac/Code/fokus-backend/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Query/Builder.php(727): call_user_func(Object(Closure), Object(Jenssegers\\Mongodb\\Collection))
#7 /Users/filipac/Code/fokus-backend/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Eloquent/Builder.php(160): Jenssegers\\Mongodb\\Query\\Builder->raw(Object(Closure))
#8 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1570): Jenssegers\\Mongodb\\Eloquent\\Builder->raw(Object(Closure))
#9 /Users/filipac/Code/fokus-backend/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Eloquent/Model.php(481): Illuminate\\Database\\Eloquent\\Model->__call('raw', Array)
#10 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1582): Jenssegers\\Mongodb\\Eloquent\\Model->__call('raw', Array)
#11 /Users/filipac/Code/fokus-backend/routes/web.php(110): Illuminate\\Database\\Eloquent\\Model::__callStatic('raw', Array)
#12 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Route.php(198): Illuminate\\Routing\\Router->{closure}()
#13 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Route.php(172): Illuminate\\Routing\\Route->runCallable()
#14 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Router.php(665): Illuminate\\Routing\\Route->run()
#15 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#16 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#17 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#18 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#19 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(68): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#20 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#21 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#22 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#23 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#24 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#26 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#29 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#30 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#31 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#32 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#33 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#35 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Router.php(667): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#36 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Router.php(642): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#37 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Router.php(608): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#38 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Router.php(597): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#39 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#40 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#41 /Users/filipac/Code/fokus-backend/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#42 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#43 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#44 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(31): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#45 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#47 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(31): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#48 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#49 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#50 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#51 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#52 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#53 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#54 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#55 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#56 /Users/filipac/Code/fokus-backend/vendor/barryvdh/laravel-cors/src/HandlePreflight.php(29): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#57 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(151): Barryvdh\\Cors\\HandlePreflight->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#58 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#59 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#60 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#61 /Users/filipac/Code/fokus-backend/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#62 /Users/filipac/Code/fokus-backend/public/index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#63 /Users/filipac/.composer/vendor/laravel/valet/server.php(147): require('/Users/filipac/...')
#64 {main}
"} 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions