MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB $abs

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 }