Jika Anda tidak peduli dengan dukungan zona waktu dalam aplikasi Anda, maka menggunakan string untuk kueri dasar di MongoDB akan berfungsi dengan baik (tetapi jika itu penting, Anda akan menginginkan Date
yang sebenarnya. jenis).
Namun, jika nanti Anda ingin melakukan matematika tanggal atau menggunakan Kerangka Agregasi dengan bidang tanggal Anda, bidang tersebut harus benar-benar Date
ketik:
http://docs.mongodb.org/manual/reference/aggregation/ #date-operator
Misalnya, Anda dapat menggunakan $dayOfWeek
fungsi pada Date
bidang yang diketik.
Anda mungkin dapat melakukan beberapa hal sederhana seperti grup pada tahun dengan menggunakan $substr
(doc
) di MongoDB, tetapi kode yang dihasilkan tidak akan sejelas (juga tidak mungkin berfungsi dengan baik).
Meskipun perbedaannya tidak terlalu besar, saya sarankan untuk menyimpannya sebagai Date
jenis jika memungkinkan secara umum.
Saya melihat di dokumen
untuk driver Perl yang diperingatkan pengembang agar tidak menggunakan DateTime
karena faktanya sangat lambat, jadi mungkin jika Anda menggunakan Perl secara teratur, dan Kerangka Agregasi bukan masalah besar, Anda sebaiknya menyimpannya sebagai angka atau string, dan mengonversinya sesuai kebutuhan di Perl.
Jika spasi menjadi masalah, hapus karakter yang tidak perlu (seperti -
):
20130613 ->
4 bytes for length of string
8 bytes encoded as UTF-8
NULL character
Itu akan menjadi 13 karakter. Nilai DateTime di BSON
/MongoDB membutuhkan 8 byte di sisi lain (seperti halnya Perl $time
fungsi).
(Saya sangat menyarankan Anda melakukan sedikit pengujian kinerja untuk mengetahui apakah dampak kinerja dari penggunaan Date
ketik MongoDB dengan Perl akan memengaruhi alur kerja tipikal Anda.)