MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB $literal

В MongoDB, $literal Операторът на конвейера за агрегиране връща стойност без синтактичен анализ.

Той приема всеки валиден израз и връща неанализирания израз.

$literal операторът може да бъде полезен, когато имате стойност, която MongoDB би могъл неволно да интерпретира като израз, но вие не искате.

Например, ако имате парична сума, която включва знак за долар, MongoDB може по невнимание да интерпретира това като име на поле. Можете да използвате $literal за да попречи на MongoDB да интерпретира такива изрази.

Пример

Да предположим, че имаме колекция, наречена test със следния документ:

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

Ето пример за прилагане на $literal :

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

Резултат:

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

В този пример връщаме стойността на name поле с помощта на $name да се позовава на него.

Връщаме също литералната стойност $name , без MongoDB да го интерпретира като name поле:

Пример 2

Да предположим, че нашата колекция съдържа следния документ:

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

Ето още един пример за използване на $literal :

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

Резултат:

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

В този случай първото върнато поле съдържа резултата от $multiply оператор срещу a и b полета.

Второто поле просто извежда стойността на литерала, която предоставихме на $literal оператор.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb Aggregation Framework:$group използва ли индекс?

  2. db.collection не е функция, когато използвате MongoClient v3.0

  3. Как мога да разбера къде mongoDB съхранява данни? (не е в /data/db!)

  4. Достъп до MongoDB от Go

  5. nodejs mongodb идентификатор на обект към низ