sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $ abs

V MongoDB, $abs operátor agregačního kanálu vrátí absolutní hodnotu čísla.

Příklad

Předpokládejme, že máme kolekci nazvanou data s následujícím dokumentem:

{ "_id" : 1, "a" : 20, "b" : -20 }

Můžeme použít $abs operátor vrátí absolutní hodnoty a a b pole.

db.data.aggregate(
  [
    { $project: { 
        _id: 0,
        a: { $abs: [ "$a" ] },
        b: { $abs: [ "$b" ] }
      }
    }
  ]
)

Výsledek:

{ "a" : 20, "b" : 20 }

Absolutní hodnoty nemají obsahovat žádná znaménka, takže můžeme vidět, že záporné znaménko bylo odstraněno z b hodnotu.

Absolutní hodnotu čísla si můžete představit jako vzdálenost na číselné ose tohoto čísla od nuly.

Nulové hodnoty

Hodnoty Null vrátí null při použití $abs operátor.

Předpokládejme, že do naší sbírky přidáme následující dokument:

{ "_id" : 2, "a" : 0, "b" : null }

Spusťte $abs operátor proti tomuto dokumentu:

db.data.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        a: { $abs: [ "$a" ] },
        b: { $abs: [ "$b" ] }
      }
    }
  ]
)

Výsledek:

{ "a" : 0, "b" : null }

Vidíme, že b vyřešen na null .

Můžeme také vidět, že 0 vyhodnotí na 0 .

Hodnoty NaN

Pokud je argument vyřešen na NaN , $abs vrátí NaN .

Příklad:

db.data.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        a: { $abs: [ "$a" ] },
        b: { $abs: [ 1 * "g" ] }
      }
    }
  ]
)

Výsledek:

{ "a" : 0, "b" : NaN }

V tomto případě jsem zkusil číslo vynásobit řetězcem, což vedlo k NaN se vrací.

Neexistující pole

Pokud $abs operátor se použije na pole, které neexistuje, null je vráceno.

Příklad:

db.data.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        c: { $abs: [ "$c" ] }
      }
    }
  ]
)

Výsledek:

{ "c" : null }

V kombinaci s jinými operátory

V tomto příkladu kombinuji $abs s $subtract za účelem výpočtu velikosti rozdílu mezi poli a a b :

db.data.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        a: 1,
        b: 1,
        result: { 
          $abs: { 
            $subtract: [ "$a", "$b" ] 
            }
        }
      }
    }
  ]
)

Výsledek:

{ "a" : 20, "b" : -20, "result" : 40 }


  1. Třída 'MongoDB\Driver\Manager' nebyla nalezena

  2. Způsobí nastavení slave-read-only no ne, způsobí, že slave potvrdí každé vyhledávání hash s hlavním?

  3. Jak načíst podrobnosti z mongo db a odeslat nebo uložit do objektu v metodě nodejs Fork

  4. Jak funguje redis, aby vám pomohl setrvání v relaci v azurovém okně