-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Aggregation Framework, Usability
-
Labels:None
-
ALL
Observed behavior: If multiple pipeline stages are specified in a single object (eg. { $project:
{ ... }, $sort:{ ... }}, the last one is used and earlier ones are dropped.
Expected behavior: Only one pipeline stage spec is allowed in a pipeline spec object. Otherwise a parse error is triggered.
Currently multiple pipeline stages are properly specified as separate objects within an array (eg. [ { $project:
{ ... } }, { $sort:{ ... }} ] ).
Test
c = db.c; c.drop(); c.save( { a:1 } ); // Runs as a $project. printjson( c.aggregate( { $project:{ z:'$a' } } ) ); // Runs as a $sort. printjson( c.aggregate( { $project:{ z:'$a' }, $sort:{ a:1 } } ) ); // Runs as a $group. printjson( c.aggregate( { $project:{ z:'$a' }, $sort:{ a:1 }, $group:{ _id:'$a' } } ) );