In MongoDB ist die Datei $abs
Der Aggregations-Pipeline-Operator gibt den absoluten Wert einer Zahl zurück.
Beispiel
Angenommen, wir haben eine Sammlung namens data
mit folgendem Dokument:
{ "_id" : 1, "a" : 20, "b" : -20 }
Wir können den $abs
verwenden -Operator, um die absoluten Werte von a
zurückzugeben und b
Felder.
db.data.aggregate(
[
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
)
Ergebnis:
{ "a" : 20, "b" : 20 }
Absolute Werte haben keine Vorzeichen, und so können wir sehen, dass das negative Vorzeichen aus dem b
entfernt wurde Wert.
Sie können sich den Absolutwert einer Zahl als den Abstand dieser Zahl von Null auf dem Zahlenstrahl vorstellen.
Nullwerte
Nullwerte geben null
zurück bei Verwendung von $abs
Betreiber.
Angenommen, wir fügen unserer Sammlung das folgende Dokument hinzu:
{ "_id" : 2, "a" : 0, "b" : null }
Lassen Sie uns den $abs
ausführen Operator gegen dieses Dokument:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ "$b" ] }
}
}
]
)
Ergebnis:
{ "a" : 0, "b" : null }
Wir können das b
sehen zu null
aufgelöst .
Wir können auch diese 0
sehen löst zu 0
auf .
NaN-Werte
Wenn das Argument zu NaN
aufgelöst wird , $abs
gibt NaN
zurück .
Beispiel:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
a: { $abs: [ "$a" ] },
b: { $abs: [ 1 * "g" ] }
}
}
]
)
Ergebnis:
{ "a" : 0, "b" : NaN }
In diesem Fall habe ich versucht, eine Zahl mit einem String zu multiplizieren, was zu NaN
führte zurückgegeben.
Nicht vorhandene Felder
Wenn der $abs
-Operator wird auf ein nicht vorhandenes Feld angewendet, null
zurückgegeben wird.
Beispiel:
db.data.aggregate(
[
{ $match: { _id: 2 } },
{ $project: {
_id: 0,
c: { $abs: [ "$c" ] }
}
}
]
)
Ergebnis:
{ "c" : null }
Kombiniert mit anderen Betreibern
In diesem Beispiel kombiniere ich $abs
mit $subtract
um die Größe der Differenz zwischen den Feldern a
zu berechnen und b
:
db.data.aggregate(
[
{ $match: { _id: 1 } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: {
$abs: {
$subtract: [ "$a", "$b" ]
}
}
}
}
]
)
Ergebnis:
{ "a" : 20, "b" : -20, "result" : 40 }