-
Type: New Feature
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
Syntax
{ $sortByCount: <arbitrary non-object expression, see 'Behavior' for why> }
Examples
> db.example.insert([ {_id: 0, x: 1}, {_id: 1, x: 2}, {_id: 2, x: 1}, {_id: 3, x: 0} ]); > db.example.aggregate([{$sortByCount: "$x"}]) {_id: 1, count: 2} {_id: 0, count: 1} {_id: 2, count: 1} // Example #2 > db.example.drop(); > db.example.insert([ {_id: 0, x: 1.4}, {_id: 1, x: 2.3}, {_id: 2, x: 1.1}, {_id: 3, x: 0.5} ]); // Note this is an expression, so does not count as an "object" for the sake of erroring. > db.example.aggregate([{$sortByCount: {$floor: "$x"}}]) {_id: 1, count: 2} {_id: 0, count: 1} {_id: 2, count: 1} // Example #3 > db.example.aggregate([{$sortByCount: {field1: "$x", field2: "$y"}}]) Error!
Behavior
- This stage is syntactic sugar for the following:
{ $group: { _id: <expression>, count: {$sum: 1} } }, {$sort: {count: -1}}
- We restrict the expression to not be an object so that we might be able to add further arguments to $sortByCount in the future.
- depends on
-
SERVER-23816 Add $sortByCount aggregation stage
- Closed