Details
-
New Feature
-
Resolution: Done
-
Major - P3
-
None
-
Fully Compatible
-
Query 15 (06/03/16), Query 16 (06/24/16)
Description
Syntax
{
|
$facet: {
|
facetName1: [<stage1>, <stage2>, <stage3>],
|
facetName2: [<stage4>, <stage5>, …],
|
...
|
}
|
}
|
Examples
> db.example.insert([
|
{
|
_id: "product1", |
avgReview: 4.3,
|
price: 21,
|
category: "TVs", |
title: "Sony 42 inch HDTV", |
attributes: [
|
{name: "type", value: "HD"}, |
{name: "screen size", value: 42}, |
{name: "manufacturer", value: "Sony"}, |
...
|
]
|
}
|
...
|
])
|
> db.example.aggregate([
|
{$match: {category: "TVs"}}, // Match all relevant results. |
{$facet: {
|
"Screen Sizes": [ |
{$unwind: "$attributes"}, |
{$match: {"attributes.name": "screen size"}}, |
{$group: {
|
_id: { /* Use $switch to compute buckets for screen sizes */ }, |
count: {$sum: 1}
|
}}
|
],
|
|
"Manufacturer": [ |
{$match: {"attributes.name": "manufacturer"}}, |
{$group: {_id: "$attributes.value", count: {$sum: 1}}}, |
{$sort: {count: -1}}
|
{$limit: 5}
|
]
|
}}
|
])
|
|
// Output.
|
{
|
"Screen Size": [ |
{_id: {min: MinKey, max: 32}, count: 32},
|
{_id: {min: 32, max: 42}, count: 32},
|
{_id: {min: 42, max: 50}, count: 33},
|
{_id: {min: 50, max: MaxKey}, count: 33}
|
],
|
"Manufacturer": [ |
{_id: "Sony", count: 54}, |
{_id: "Samsung", count: 45}, |
{_id: "LG", count: 34}, |
{_id: "Sharp", count: 22}, |
{_id: "Vizio", count: 14}, |
]
|
}
|
Behavior
- names of sub-pipelines (keys in the document) must be unique.
- This is a blocking stage.
Attachments
Issue Links
- is depended on by
-
CSHARP-1715 Add support for $facet aggregation stage
-
- Closed
-
-
JAVA-2255 Add builder for $facet aggregation stage
-
- Closed
-
- is documented by
-
DOCS-8830 Faceted Search - $facet
-
- Closed
-
- is duplicated by
-
SERVER-15611 Support returning both the matched documents and the count of matched documents in the aggregation framework
-
- Closed
-
- is related to
-
SERVER-12927 Support ROLLUP function in the $group aggregation operator
-
- Backlog
-
-
DRIVERS-297 Aggregation Framework Support for 3.4
-
- Closed
-
(1 is related to)