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

MongoDB $atan

V MongoDB, $atan Operátor agregačního potrubí vrátí arkustangens (inverzní tangens) hodnoty.

Návratová hodnota je v radiánech.

$atan přijímá jakýkoli platný výraz, který se překládá na číslo.

$atan operátor byl představen v MongoDB 4.2.

Příklad

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

{ "_id" : 1, "data" : 2 }

Můžeme použít $atan operátor vrátí arkustangens data pole:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        arctangent: { $atan: "$data" }
      }
    }
  ]
)

Výsledek:

{ "arctangent" : 1.1071487177940906 }

Převést na stupně

Jak bylo zmíněno, $atan vrátí výsledek v radiánech. Můžete použít $radiansToDegrees operátor, pokud chcete výsledek ve stupních.

Příklad:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        radians: { $atan: "$data" },
        degrees: { $radiansToDegrees: { $atan: "$data" } }
      }
    }
  ]
)

Výsledek:

{ "radians" : 1.1071487177940906, "degrees" : 63.43494882292202 }

V tomto příkladu první pole představuje výsledek v radiánech a druhé pole jej zobrazuje ve stupních.

128bitové desetinné hodnoty

Ve výchozím nastavení $atan operátor vrací hodnoty jako double , ale může také vracet hodnoty jako 128bitové desítkové číslo, pokud se výraz převede na 128bitovou desítkovou hodnotu.

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

{ "_id" : 2, "data" : NumberDecimal("2.1301023541559787031443874490659") }

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

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        arctangent: { $atan: "$data" }
      }
    }
  ]
)

Výsledek:

{ "arctangent" : NumberDecimal("1.131877001503761613330938729211760") }

Výstup je 128bitový desítkový.

Nulové hodnoty

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

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

{ "_id" : 3, "data" : null }

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

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $atan: "$data" }
      }
    }
  ]
)

Výsledek:

{ "result" : null }

Vidíme, že výsledek je null .

Hodnoty NaN

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

Příklad:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $atan: 1 * "$data" }
      }
    }
  ]
)

Výsledek:

{ "result" : NaN }

Neexistující pole

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

Příklad:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $atan: "$wrong" }
      }
    }
  ]
)

Výsledek:

{ "result" : null }

  1. MongoDB $ tanh

  2. Existuje analog MGET pro hashe Redis?

  3. Redis AOF fsync (VŽDY) vs. strom LSM

  4. Jak odstranit prvek z dvojitě vnořeného pole v dokumentu MongoDB.