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

3 sposoby konwersji daty na ciąg znaków w MongoDB

MongoDB ma typ Date BSON, który umożliwia przechowywanie dat jako dat.

Możesz także przechowywać daty jako ciągi, jeśli tego potrzebujesz.

Idąc o krok dalej, możesz również przekonwertować Date na ciąg.

W tym artykule przedstawiono trzy sposoby konwersji daty na ciąg w MongoDB.

Przykładowe dane

W przykładach w tym artykule wykorzystano następujący dokument w kolekcji o nazwie cats :

{
	"_id" : 1,
	"name" : "Scratch",
	"born" : ISODate("2021-01-03T23:30:15.123Z")
}

Zauważ, że born pole to Data. Poniższe przykłady używają różnych operatorów potoku agregacji, aby przekonwertować to pole na łańcuch.

$dateToString Operator

$dateToString Operator potoku agregacji jest najbardziej oczywistym miejscem do rozpoczęcia.

Jak sama nazwa wskazuje, jego jedynym celem jest konwersja daty na ciąg (i zwrócenie wyniku).

Przykład:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
       }
     }
   ]
)

Wynik:

{ "dateString" : "2021-01-03T23:30:15.123Z" }

Tutaj podałem ciąg formatujący, aby określić format wynikowego ciągu. W tym przypadku użyłem %Y-%m-%dT%H:%M:%S.%LZ , który jest formatem domyślnym. Gdybym nie określił formatu, jest to format, którego użyłby.

Możesz przenieść te specyfikatory formatu, aby dopasować je do wynikowego ciągu.

Na przykład możemy to zrobić:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
       }
     }
   ]
)

Wynik:

{ "dateString" : "03/01/2021" }

Zobacz MongoDB $dateToString aby uzyskać więcej informacji o tym operatorze.

$toString Operator

$toString Operator potoku agregacji jest podobny do $dateToString , poza tym, że może konwertować z różnych typów – nie ogranicza się tylko do konwersji z Daty.

Ale dla naszych celów dokonujemy konwersji z daty.

Przykład:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $toString: "$born" }
       }
     }
   ]
)

Wynik:

{ "dateString" : "2021-01-03T23:30:15.123Z" }

Ten operator nie daje nam możliwości określenia formatu, więc format jest zwracany bez zmian.

Zobacz MongoDB $toString aby uzyskać więcej informacji i przykładów.

$convert Operator

$convert operator został specjalnie zaprojektowany do konwersji między jednym typem a drugim.

input parametr określa pole, które chcesz przekonwertować, a to parametr określa typ, na który chcesz go przekonwertować.

Przykład:

db.cats.aggregate(
  [
    {
      $project:
        { 
          result: 
          {
            $convert: { 
              input: "$born", 
              to: "string",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Wynik:

{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }

Zauważ, że $convert operator akceptuje również onError i onNull parametry, które pozwalają nam dostarczyć komunikat do użycia w przypadku błędu lub null wartość. Zapobiega to zatrzymaniu całej operacji agregacji i umożliwia wyświetlanie przyjaznego dla użytkownika komunikatu o błędzie w dokumencie wyjściowym.

Zobacz MongoDB $convert aby uzyskać więcej informacji i przykładów.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zwracanie elementów tablicy wewnętrznej z wielu dokumentów w posortowanej formie

  2. Jak mogę stwierdzić, gdzie mongoDB przechowuje dane? (nie jest w domyślnym /data/db!)

  3. Błąd duplikatu klucza Mongoose z upsert

  4. Dokumenty podrzędne Mongoose a schemat zagnieżdżony

  5. Dodaj nowe pole do każdego dokumentu w kolekcji MongoDB