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

MongoDB $toInt

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

Повечето типове могат да бъдат преобразувани в цяло число, но стойностите на ObjectId и Date не могат.

Когато преобразувате булева в цяло число, ако булевата е 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")
}

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

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

Резултат:

{
	"double" : 123,
	"string" : 123,
	"boolean" : 1,
	"integer" : 123,
	"long" : 123,
	"decimal" : 123
}

Имайте предвид, че изключих date и _id полета от операцията, тъй като тези типове не могат да бъдат преобразувани в цяло число.

Грешки

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

$toInt операторът е еквивалент на използването на $convert оператор за преобразуване на стойност в цяло число.

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

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          result: 
          {
            $convert: { 
              input: "$date", 
              to: "int",
              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. mongoError:Топологията е унищожена

  3. Как да върна актуализиран документ от метода findOneAndUpdate?

  4. Премахване на една-една и една-много препратки - Mongoose

  5. MongoDB $pullAll