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

MongoDB $toLong

От MongoDB 4.0 можете да използвате $toLong оператор на конвейер за агрегиране, за да преобразува стойност в long.

Повечето типове могат да бъдат преобразувани в дълги, но ObjectId не може.

Когато конвертирате стойност за дата в дълга, $toLong връща броя милисекунди от епохата, който съответства на стойността на датата.

Когато преобразувате булева стойност в дълга, ако булевата е true , тогава дългата е 1 . Ако логичното е false , тогава дългата е 0 .

Пример

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

{
	"_id" : ObjectId("601340eac8eb4369cf6ad9db"),
	"double" : 123.75,
	"string" : "123",
	"boolean" : true,
	"date" : ISODate("2020-12-31T23:30:15.123Z"),
	"integer" : 123,
	"long" : NumberLong(123),
	"decimal" : NumberDecimal("123.75")
}

Можем да използваме $toLong оператор за преобразуване на тези полета (с изключение на _id поле) до дълго. Ако входът вече е дълъг, тогава той просто връща long.

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          double: { $toLong: "$double" },
          string: { $toLong: "$string" },
          boolean: { $toLong: "$boolean" },
          date: { $toLong: "$date" },
          integer: { $toLong: "$integer" },
          long: { $toLong: "$long" },
          decimal: { $toLong: "$decimal" }
        }
    }
  ]
).pretty()

Резултат:

{
	"double" : NumberLong(123),
	"string" : NumberLong(123),
	"boolean" : NumberLong(1),
	"date" : NumberLong("1609457415123"),
	"integer" : NumberLong(123),
	"long" : NumberLong(123),
	"decimal" : NumberLong(123)
}

Грешки

Ако срещнете грешки, опитайте да използвате $convert оператор вместо $toLong . $convert операторът ви позволява да обработвате грешки, без да засягате цялата операция на агрегиране.

$toLong операторът е еквивалент на използването на $convert оператор за преобразуване на стойност в long.

Ето пример за използване на $convert за да опитате да конвертирате ObjectId в дълъг (което води до грешка):

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          result: 
          {
            $convert: { 
              input: "$_id", 
              to: "long",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Резултат:

{ "result" : "An error occurred" } 

Използване на $convert ни позволи да посочим съобщението за грешка, което да използваме при възникване на грешката, и то не спря цялата операция на агрегиране.

Вижте MongoDB $convert за още примери.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да създам MongoDB дъмп на моята база данни?

  2. Лоша производителност на агрегиране при търсене

  3. Какво е полето __v в Mongoose

  4. Достъп до база данни за производство на Meteor

  5. Изключете специфични полета в индекса на заместващи символи в MongoDB