В MongoDB, $abs Операторът на конвейера за агрегиране връща абсолютната стойност на число.
Пример
Да предположим, че имаме колекция, наречена data със следния документ:
{ "_id" : 1, "a" : 20, "b" : -20 }
Можем да използваме $abs оператор за връщане на абсолютните стойности на a и b полета.
db.data.aggregate(
[
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
) Резултат:
{ "a" : 20, "b" : 20 }
Абсолютните стойности не включват никакви знаци и така можем да видим, че отрицателният знак е премахнат от b стойност.
Можете да мислите за абсолютна стойност на число като разстоянието на числовата права до това число от нулата.
Нулеви стойности
Нулевите стойности връщат null когато използвате $abs оператор.
Да предположим, че добавяме следния документ към нашата колекция:
{ "_id" : 2, "a" : 0, "b" : null }
Нека стартираме $abs оператор срещу този документ:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
) Резултат:
{ "a" : 0, "b" : null }
Можем да видим, че b разрешен до null .
Можем също да видим, че 0 разрешава до 0 .
NaN стойности
Ако аргументът се разреши до NaN , $abs връща NaN .
Пример:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ 1 * "g" ] }
}
}
]
) Резултат:
{ "a" : 0, "b" : NaN }
В този случай се опитах да умножа число по низ, което доведе до NaN се връща.
Несъществуващи полета
Ако $abs операторът се прилага срещу поле, което не съществува, null се връща.
Пример:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
c: { $abs: [ "$c" ] }
}
}
]
) Резултат:
{ "c" : null } Комбинирано с други оператори
В този пример комбинирам $abs с $subtract за да се изчисли големината на разликата между полетата a и b :
db.data.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: {
$abs: {
$subtract: [ "$a", "$b" ]
}
}
}
}
]
) Резултат:
{ "a" : 20, "b" : -20, "result" : 40 }