-
Type:
New Feature
-
Resolution: Done
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Builders
-
None
-
None
-
None
-
None
-
None
-
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
-
- is depended on by
-
DRIVERS-297 Aggregation Framework Support for 3.4
-
- Closed
-