MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB $doDate

W MongoDB $toDate operator agregacji konwertuje wartość na datę

$toDate przyjmuje dowolne prawidłowe wyrażenie. Jeśli wyrażenia nie można przekonwertować na datę, zwraca błąd. Jeśli wyrażenie ma wartość null lub brak, zwraca null .

Przykład

Załóżmy, że mamy kolekcję o nazwie samples z następującym dokumentem:

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

Możemy użyć następującego zapytania, aby zwrócić każdą z tych wartości jako datę.

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

Wynik:

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

Zgodnie z oczekiwaniami, wszystkie pola są zwracane wraz z odpowiadającymi im wartościami przekonwertowanymi na wartości daty.

Możesz zauważyć, że pole ObjectId zwraca inną datę innym. Dzieje się tak, ponieważ _id wartość pola odzwierciedla datę utworzenia dokumentu, podczas gdy pozostałe daty były po prostu arbitralnymi datami utworzonymi przeze mnie. Więcej o ObjectId poniżej.

Typy danych wejściowych

$toDate operator akceptuje następujące typy danych wejściowych:

  • Podwójny
  • Dziesiętny
  • Długie
  • Ciąg (musi być prawidłowym ciągiem daty)
  • Identyfikator obiektu

Więcej na ten temat poniżej.

Typy numeryczne

Używając typów numerycznych (Double, Decimal i Long), $toDate zwraca datę odpowiadającą liczbie milisekund reprezentowanych przez wartość. W przypadku Double i Decimal jest to wartość obcięta. $toDate operator interpretuje wartości liczbowe w następujący sposób:

  • Wartość dodatnia odpowiada liczbie milisekund od 1 stycznia 1970 r.
  • Wartość ujemna odpowiada liczbie milisekund przed 1 stycznia 1970 r.

Typy ciągów

W przypadku używania typu ciągu ciąg musi być prawidłowym ciągiem daty. Na przykład:

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

Nie możesz używać niepełnych dat ani nieprawidłowych wartości, takich jak "Monday" , "March" , "2020" itp.

Identyfikator obiektu

Wartości ObjectId to 12-bajtowe wartości szesnastkowe, które składają się z:

  • 4-bajtowa wartość znacznika czasu, reprezentująca utworzenie ObjectId, mierzona w sekundach od epoki Uniksa.
  • 5 bajtów to wartość losowa
  • Licznik przyrostowy o 3 bajty, zainicjowany do wartości losowej.

$toDate operator zwraca część znacznika czasu jako datę.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Polecenie mongo nie zostało rozpoznane podczas próby połączenia z serwerem mongodb

  2. MongoDB — Usuń bazę danych

  3. Mongoose Query do filtrowania tablicy i wypełniania powiązanej treści

  4. 3 proste kroki, aby poprawić bezpieczeństwo instalacji MongoDB

  5. Powstrzymaj Mongoose przed tworzeniem właściwości _id dla elementów tablicy dokumentów podrzędnych