$median
The `$median` accumulator operator calculates the median value of a numeric field in a group of documents. It's useful for finding the middle value in a distribution of data.
Syntax
{
$group: {
_id: <expression>,
medianValue: {
$median: {
input: <field or expression>,
method: <>
}
}
}
}
Parameters
input
objectrequiredThe field or expression from which to calculate the median.
method
stringrequiredThe method to use for calculating the median. Typically "approximate".
Examples
Sample Data
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop",
"sales": {
"totalSales": 75670,
"salesByCategory": [
{ "categoryName": "Wine Accessories", "totalSales": 34440 },
{ "categoryName": "Bitters", "totalSales": 39496 },
{ "categoryName": "Rum", "totalSales": 1734 }
]
}
}
Calculate the median sales volume
Calculate the median sales volume within each category across all stores.
This query groups documents by distinct sales categories and calculates the median sales within each category.
Query:
db.stores.aggregate([
{ $unwind: "$sales.salesByCategory" },
{
$group: {
_id: "$sales.salesByCategory.categoryName",
medianSales: {
$median: {
input: "$sales.salesByCategory.totalSales",
method: "approximate"
}
}
}
}
])
Output:
[
{ "_id": "Light Bulbs", "medianSales": 24845 },
{ "_id": "Christmas Trees", "medianSales": 28210 },
{ "_id": "Ukuleles", "medianSales": 27295 },
{ "_id": "GPUs", "medianSales": 19813 },
{ "_id": "Towels", "medianSales": 27771 }
]