Di MongoDB, $toDate operator agregasi mengonversi nilai menjadi tanggal
$toDate mengambil ekspresi yang valid. Jika ekspresi tidak dapat dikonversi ke tanggal, itu akan mengembalikan kesalahan. Jika ekspresinya null atau hilang, ia mengembalikan null .
Contoh
Misalkan kita memiliki koleksi yang disebut samples dengan dokumen berikut:
{
"_id" : ObjectId("60066f1cc8eb4369cf6ad9c9"),
"double" : 1613372035500.75,
"decimal" : NumberDecimal("1613372035500.75"),
"long" : NumberLong("1613372035500"),
"string" : "2021-02-15 06:53:55"
} Kita dapat menggunakan kueri berikut untuk mengembalikan masing-masing nilai tersebut sebagai Tanggal.
db.samples.aggregate(
[
{
$project:
{
_id: 0,
"ObjectId": { $toDate: "$_id" },
"double": { $toDate: "$double" },
"decimal": { $toDate: "$decimal" },
"long": { $toDate: "$long" },
"string": { $toDate: "$string" }
}
}
]
).pretty() Hasil:
{
"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")
} Seperti yang diharapkan, semua bidang dikembalikan dengan nilai terkait yang dikonversi ke nilai Tanggal.
Anda mungkin memperhatikan bahwa bidang ObjectId mengembalikan tanggal yang berbeda dengan yang lain. Ini karena _id nilai bidang mencerminkan tanggal dokumen dibuat, sedangkan tanggal lainnya hanyalah tanggal arbitrer yang dibuat oleh saya. Selengkapnya tentang ObjectId di bawah ini.
Jenis Masukan
$toDate operator menerima jenis input berikut:
- Ganda
- Desimal
- Panjang
- String (harus berupa string tanggal yang valid)
- Id Objek
Selengkapnya tentang ini di bawah.
Tipe Numerik
Saat menggunakan tipe numerik (Ganda, Desimal, dan Panjang), $toDate mengembalikan tanggal yang sesuai dengan jumlah milidetik yang diwakili oleh nilai. Untuk Double dan Desimal, ini adalah nilai yang terpotong. $toDate operator menginterpretasikan nilai numerik sebagai berikut:
- Nilai positif sesuai dengan jumlah milidetik sejak 1 Januari 1970.
- Nilai negatif sesuai dengan jumlah milidetik sebelum 1 Januari 1970.
Jenis String
Saat menggunakan tipe string, string harus berupa string tanggal yang valid. Misalnya:
"2021-02-15""15 February 2021""2021-02-15 06:53:55""2021-02-15 06:53:55+1100"
Anda tidak dapat menggunakan tanggal yang tidak lengkap atau nilai yang tidak valid seperti "Monday" , "March" , "2020" , dll.
ObjectId
Nilai ObjectId adalah nilai heksadesimal 12 byte yang terdiri dari:
- Nilai cap waktu 4 byte, yang mewakili pembuatan ObjectId, diukur dalam detik sejak zaman Unix.
- 5 byte adalah nilai acak
- Penghitung pertambahan 3 byte, diinisialisasi ke nilai acak.
$toDate operator mengembalikan bagian cap waktu sebagai Tanggal.