$abs
The `$abs` operator returns the absolute value of a number. It removes any negative sign from a number, making it positive.
Syntax
{ $abs: <expression> }
Parameters
<expression>
stringrequiredAny expression that resolves to a number. If the expression is null or refers to a missing field, $abs returns null.
Examples
Sample Data
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop",
"sales": {
"salesByCategory": [
{ "categoryName": "Wine Accessories", "totalSales": 34440 }
]
}
}
Use the absolute value of total sales
Calculate the absolute difference in sales volume of each category and the average sales across all categories for a store.
Query:
db.stores.aggregate([
{ $match: { _id: "40d6f4d7-50cd-4929-9a07-0a7a133c2e74" } },
{
$project: {
name: 1,
salesByCategory: {
$map: {
input: "$sales.salesByCategory",
as: "category",
in: {
categoryName: "$$category.categoryName",
totalSales: "$$category.totalSales",
differenceFromAverage: {
$abs: {
$subtract: [
"$$category.totalSales",
{ $avg: "$sales.salesByCategory.totalSales" }
]
}
}
}
}
}
}
}
])
Output:
[
{
"_id": "40d6f4d7-50cd-4929-9a07-0a7a133c2e74",
"name": "Proseware, Inc. | Home Entertainment Hub",
"salesByCategory": [
{ "categoryName": "Sound Bars", "totalSales": 2120, "differenceFromAverage": 28252.8 }
]
}
]