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

MongoDB $doslov

V MongoDB, $literal operátor agregačního kanálu vrátí hodnotu bez analýzy.

Přijímá jakýkoli platný výraz a vrací neanalyzovaný výraz.

$literal Operátor může být užitečný, když máte hodnotu, kterou by MongoDB mohl neúmyslně interpretovat jako výraz, ale vy to nechcete.

Pokud máte například peněžní částku, která obsahuje znak dolaru, MongoDB to může neúmyslně interpretovat jako název pole. Můžete použít $literal zabránit MongoDB v interpretaci takových výrazů.

Příklad

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

{ "_id" : 1, "name" : "Homer" }

Zde je příklad použití $literal :

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 1 ] } } },
    {
      $project:
        { 
          _id: 0,
          interpreted: "$name",
          literal: { $literal: "$name" }
        }
    }
  ]
)

Výsledek:

{ "interpreted" : "Homer", "literal" : "$name" }

V tomto příkladu vrátíme hodnotu name pole pomocí $name odkazovat na to.

Vrátíme také doslovnou hodnotu $name , aniž by to MongoDB interpretovalo jako name pole:

Příklad 2

Předpokládejme, že naše sbírka obsahuje následující dokument:

{ "_id" : 2, "a" : 10, "b" : 5 }

Zde je další příklad použití $literal :

db.test.aggregate(
  [
    { $match: { _id: { $in: [ 2 ] } } },
    {
      $project:
        { 
          _id: 0,
          interpreted: { $multiply: [ "$a", "$b" ] },
          literal: { $literal: { $multiply: [ "$a", "$b" ] } }
        }
    }
  ]
)

Výsledek:

{ "interpreted" : 50, "literal" : { "$multiply" : [ "$a", "$b" ] } }

V tomto případě první vrácené pole obsahuje výsledek $multiply operátor proti a a b pole.

Druhé pole jednoduše vypíše doslovnou hodnotu, kterou jsme poskytli do $literal operátor.


  1. Operátor agregačního potrubí MongoDB $avg

  2. Název MongoDB:locale::facet::_S_create_c_locale není platný

  3. Jak úplně odstranit pole z dokumentu MongoDB?

  4. Spuštění integrace ElastiCache