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

MongoDB $toDouble

Fra MongoDB 4.0 kan du bruge $toDouble aggregeringspipeline-operatør for at konvertere en værdi til en dobbelt.

De fleste typer kan konverteres til dobbelt, men ObjectId kan ikke.

Når du konverterer en Dato-værdi til en dobbelt, $toDouble returnerer antallet af millisekunder siden epoken, der svarer til datoværdien.

Når du konverterer en boolean til en double, hvis boolean er true , så er det dobbelte 1 . Hvis boolean er false , så er det dobbelte 0 .

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 $toDouble operatør for at konvertere disse typer (undtagen ObjectId) til en dobbelt. Hvis input allerede er en dobbelt, så returnerer den blot det dobbelte.

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

Resultat:

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

Fejl

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

$toDouble operator svarer til at bruge $convert operator for at konvertere en værdi til en dobbelt.

Her er et eksempel på brug af $convert at forsøge at konvertere et ObjectId til et dobbelt (hvilket resulterer i en fejl):

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          result: 
          {
            $convert: { 
              input: "$_id", 
              to: "double",
              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. Programmatisk opdatering af felter i Mongo og Meteor

  2. Google Cloud Platform - Kan ikke oprette forbindelse til mongodb

  3. MongoDB $rand

  4. redis:sikkerhedskopiering af dump.rdb