Saya telah melihat menggunakan string, cap waktu integer dan objek datong mongo.
177
Cara terbaik adalah menyimpan objek Tanggal JavaScript asli , yang dipetakan ke objek Tanggal asli BSON .
> db.test.insert({date: ISODate()})
> db.test.insert({date: new Date()})
> db.test.find()
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:42.389Z") }
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:57.240Z") }
Jenis asli mendukung seluruh jajaran metode yang berguna luar kotak, yang dapat Anda gunakan dalam pekerjaan pengurangan peta Anda, misalnya.
Jika perlu, Anda dapat dengan mudah mengkonversi Date
objek ke dan dari Unix cap waktu 1) , menggunakan getTime()
metode dan Date(milliseconds)
konstruktor, masing-masing.
1) Sebenarnya, cap waktu Unix diukur dalam detik . Objek Tanggal JavaScript mengukur dalam milidetik sejak zaman Unix.
389
dan240
adalah milidetik dari cap waktu. FormatZ
dalam string memberi tahu MongoDB bahwa cap waktu yang Anda berikan adalah dalam UTC. Jika Anda kemudian membacanya kembali, aplikasi Anda mungkin mengubahnya ke zona waktu lokal Anda , sehingga sepertinya waktu telah berubah. Tetapi waktunya masih sama, hanya ditafsirkan dari perspektif zona waktu yang berbeda. Misalnya12:50:42Z
dan13:50:42+01:00
mewakili momen yang sama dalam waktu.21:56:03+01:00
sekarang di CET dan Anda masukkannew Date()
, maka MongoDB mungkin mewakili sebagai20:56:03Z
. Tetapi ketika Anda membacanya kembali dan menampilkannya di aplikasi Anda menggunakan pengaturan zona waktu lokal (CET), itu akan membacanya21:56:03
lagi.Satu datestamp sudah ada di objek _id, mewakili waktu insert
Jadi, jika waktu memasukkan adalah yang Anda butuhkan, sudah ada di sana:
Masuk ke shell mongodb
Buat database Anda dengan memasukkan item
Mari kita buat database itu seperti sekarang ini
Dapatkan kembali baris:
Dapatkan setiap baris dalam format yyyy-MM-dd HH: mm: ss:
Jika itu satu-liner membingungkan Anda, saya memiliki langkah-langkah tentang cara kerjanya di sini: https://stackoverflow.com/a/27613766/445131
sumber
_id
?_id.getTimestamp()
.