sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $toInt

Fra MongoDB 4.0 kan du bruge $toInt aggregeringspipeline-operator for at konvertere en værdi til et heltal.

De fleste typer kan konverteres til et heltal, men det kan værdierne ObjectId og Date ikke.

Når du konverterer en boolean til et heltal, hvis boolean er true , så er heltal 1 . Hvis boolean er false , så er hele tallet 0 .

Numeriske værdier såsom dobbelt og decimal afkortes efter behov.

Eksempel

Antag, at vi har en samling kaldet types og den indeholder følgende dokumenter:

{
	"_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")
}

Vi kan bruge $toInt operator til at konvertere disse felter (undtagen _id og date felter) til et heltal. Hvis input allerede er et heltal, returnerer det simpelthen heltal.

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()

Resultat:

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

Bemærk, at jeg har ekskluderet date og _id felter fra operationen, fordi disse typer ikke kan konverteres til et heltal.

Fejl

Hvis du støder på fejl, så prøv at bruge $convert operator i stedet for $toInt . $convert operator giver dig mulighed for at håndtere fejl uden at påvirke hele aggregeringsoperationen.

$toInt operator svarer til at bruge $convert operator for at konvertere en værdi til et heltal.

Her er et eksempel på brug af $convert for at prøve at konvertere en dato til et heltal (hvilket resulterer i en fejl):

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

Resultat:

{ "result" : "An error occurred" } 

Brug af $convert gav os mulighed for at angive den fejlmeddelelse, der skulle bruges, når fejlen opstod, og det stoppede ikke hele aggregeringsoperationen.

Se MongoDB $convert for flere eksempler.


  1. "Felt krævede en bønne af typen, der ikke kunne findes." fejl fjeder afslappende API ved hjælp af mongodb

  2. Redigo ScanStruct fejl med time.Time

  3. Fjern felt fundet i ethvert mongodb-array

  4. Bedste måde at opbevare redis-nøgler på