Jika Anda memiliki dokumen yang menyimpan tanggal sebagai objek Tanggal, tetapi Anda ingin mengembalikannya dalam format yang berbeda, Anda dapat menggunakan $dateToString operator pipa agregat.
Misalnya, Anda mungkin ingin tanggal dikembalikan dalam mm/dd/yyyy format sebagai ganti ISODate() long yang panjang format yang mencakup menit, detik, milidetik, dll
$dateToString operator mengonversi objek Date menjadi string, dan secara opsional memungkinkan Anda menentukan format untuk output yang dihasilkan.
Contoh
Misalkan kita memiliki koleksi yang disebut cats dengan dokumen sebagai berikut:
{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") }
{ "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:20.112Z") }
{ "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:45:01.007Z") }
Kita dapat menggunakan $dateToString untuk mengembalikan dokumen tersebut dengan tanggal dalam format yang berbeda.
Misalnya, mari kita hapus detik dan milidetik dari tanggal:
db.cats.aggregate(
[
{
$project: {
name: 1,
formattedDate: { $dateToString: { format: "%Y-%m-%d %H:%M", date: "$born" } }
}
}
]
) Hasil:
{ "_id" : 1, "name" : "Scratch", "formattedDate" : "2021-01-03 23:30" }
{ "_id" : 2, "name" : "Meow", "formattedDate" : "2019-12-08 04:00" }
{ "_id" : 3, "name" : "Fluffy", "formattedDate" : "2020-09-24 10:45" }
Kami dapat memformat tanggal dengan menggunakan format parameter. Ini adalah parameter opsional yang memungkinkan Anda menggunakan nol atau lebih penentu format untuk menunjukkan bagaimana tanggal harus diformat.
Lihat MongoDB $dateToString Penentu Format untuk daftar lengkap penentu format yang dapat digunakan dengan $dateToString operator.
Tanggal dalam dd/mm/yyyy Format
Berikut contoh lain yang mengubah tanggal menjadi dd/mm/yyyy format:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
}
}
]
) Hasil:
{ "formattedDate" : "03/01/2021" }
{ "formattedDate" : "08/12/2019" }
{ "formattedDate" : "24/09/2020" } Tanggal dalam mm/dd/yyyy Format
Atau untuk memasukkannya ke dalam mm/dd/yyyy format, kita cukup mengganti dua penentu format pertama di sekitar:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%m/%d/%Y", date: "$born" } }
}
}
]
) Hasil:
{ "formattedDate" : "01/03/2021" }
{ "formattedDate" : "12/08/2019" }
{ "formattedDate" : "09/24/2020" } Mengembalikan Satu Bagian Tanggal
Anda dapat menyertakan penentu format sebanyak atau sesedikit yang Anda inginkan. Misalnya, Anda dapat menggunakan hanya satu penentu format untuk menampilkan bagian tahun saja dari tanggal.
Contoh:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%Y", date: "$born" } }
}
}
]
) Hasil:
{ "formattedDate" : "2021" }
{ "formattedDate" : "2019" }
{ "formattedDate" : "2020" }
Meskipun, ingatlah bahwa ada cara lain untuk mengekstrak hanya satu bagian tanggal dari objek Tanggal. Misalnya, Anda dapat menggunakan $year operator untuk mengekstrak tahun.
Berikut adalah berbagai operator untuk mengekstrak setiap bagian tanggal tertentu:
$dayOfWeek$dayOfMonth$dayOfYear$hour$isoWeek$isoWeekYear$isoDayOfWeek$millisecond$minute$month$second$week$year
Anda juga dapat menggunakan $dateToParts operator untuk mengembalikan dokumen yang berisi semua berbagai bagian tanggal yang dipisahkan ke dalam bidangnya sendiri.