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

MongoDB $toDate

I MongoDB er $toDate aggregeringsoperator konverterer en værdi til en dato

$toDate tager ethvert gyldigt udtryk. Hvis udtrykket ikke kan konverteres til en dato, returnerer det en fejl. Hvis udtrykket er null eller mangler, returnerer den null .

Eksempel

Antag, at vi har en samling kaldet samples med følgende dokument:

{
	"_id" : ObjectId("60066f1cc8eb4369cf6ad9c9"),
	"double" : 1613372035500.75,
	"decimal" : NumberDecimal("1613372035500.75"),
	"long" : NumberLong("1613372035500"),
	"string" : "2021-02-15 06:53:55"
}

Vi kan bruge følgende forespørgsel til at returnere hver af disse værdier som en Dato.

db.samples.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          "ObjectId": { $toDate: "$_id" },
          "double": { $toDate: "$double" },
          "decimal": { $toDate: "$decimal" },
          "long": { $toDate: "$long" },
          "string": { $toDate: "$string" }
        }
    }
  ]
).pretty()

Resultat:

{
	"ObjectId" : ISODate("2021-01-19T05:33:16Z"),
	"double" : ISODate("2021-02-15T06:53:55.500Z"),
	"decimal" : ISODate("2021-02-15T06:53:55.500Z"),
	"long" : ISODate("2021-02-15T06:53:55.500Z"),
	"string" : ISODate("2021-02-15T06:53:55Z")
}

Som forventet returneres alle felter med deres tilsvarende værdier konverteret til datoværdier.

Du bemærker måske, at feltet ObjectId returnerer en anden dato end de andre. Dette er fordi _id feltets værdi afspejler datoen, hvor dokumentet blev oprettet, mens de andre datoer kun var vilkårlige datoer oprettet af mig. Mere om ObjectId nedenfor.

Inputtyper

$toDate operatøren accepterer følgende inputtyper:

  • Dobbelt
  • Decimal
  • Lang
  • String (skal være en gyldig datostreng)
  • ObjectId

Mere om disse nedenfor.

Numeriske typer

Når du bruger de numeriske typer (dobbelt, decimal og lang), $toDate returnerer en dato, der svarer til antallet af millisekunder repræsenteret af værdien. For Double og Decimal er dette den trunkerede værdi. $toDate operatoren fortolker numeriske værdier som følger:

  • En positiv værdi svarer til antallet af millisekunder siden 1. januar 1970.
  • En negativ værdi svarer til antallet af millisekunder før 1. januar 1970.

Strengtyper

Når du bruger en strengtype, skal strengen være en gyldig datostreng. For eksempel:

  • "2021-02-15"
  • "15 February 2021"
  • "2021-02-15 06:53:55"
  • "2021-02-15 06:53:55+1100"

Du kan ikke bruge ufuldstændige datoer eller ugyldige værdier såsom "Monday" , "March" , "2020" osv.

ObjectId

ObjectId-værdier er 12 byte hexadecimale værdier, der består af:

  • En tidsstempelværdi på 4 byte, der repræsenterer objekt-id'ets oprettelse, målt i sekunder siden Unix-epoken.
  • En 5 byte er en tilfældig værdi
  • En 3 byte-tæller, initialiseret til en tilfældig værdi.

$toDate operatør returnerer tidsstemplet som en Dato.


  1. MongoSocketReadException:For tidligt nået slutningen af ​​streamen (efter en periode med inaktivitet)

  2. Hvordan installerer jeg Predis på XAMPP-vinduer?

  3. ScaleGrid-hosting til Redis™ på din egen AWS-konto

  4. MongoDB Find ydeevne:enkelt sammensat indeks VS to enkeltfeltindekser