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

MongoDB $toDouble

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

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

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

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

Пример

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

{ "_id" :ObjectId("601340eac8eb4369cf6ad9db"), "double" :123.75, "string" :"123", "boolean" :true, "date" :ISODate("2020-12-30:31:15.123Z"), "цяло число" :123, "дълго" :NumberLong(123), "десетично" :NumberDecimal("123.75")}

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

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

Резултат:

{ "double" :123,75, "string" :123, "boolean" :1, "date" :1609457415123, "integer" :123, "long" :123, "precimal" :123>. 

Грешки

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

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

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

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

Резултат:

{ "резултат" :"Възникна грешка" } 

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

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Проактивен мониторинг на MongoDB (ъгъл на Developer Studio/Advisors)

  2. mongodb заявка без име на поле

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

  4. Как да сумирате всички полета в поддокумент на MongoDB?

  5. Как най-добре да създадете RESTful API в Node.js