Saya tahu bahwa ObjectIds berisi tanggal pembuatannya. Apakah ada cara untuk menanyakan aspek ObjectId ini?
javascript
mongodb
Zach
sumber
sumber
Jawaban:
Popping Stempel Waktu ke ObjectIds mencakup kueri berdasarkan tanggal yang disematkan di ObjectId dengan sangat rinci.
Secara singkat dalam kode JavaScript:
sumber
~/.mongorc.js
file Anda agar tersedia saatmongo
shell dijalankan.ObjectId(hexSeconds + "0000000000000000");
kedb.ObjectID.createFromHexString(hexSeconds + "0000000000000000");
ObjectId()
dengan:require('mongoose').Types.ObjectId()
- di manarequire('mongoose')
instance Mongoose yang diinisialisasi / dikonfigurasikan.Menggunakan fungsi inbuilt yang disediakan oleh driver mongodb di dalam Node.js memungkinkan Anda melakukan kueri dengan cap waktu apa pun:
Atau, untuk mencari catatan sebelum waktu saat ini, Anda cukup melakukan:
Sumber: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
sumber
Di
pymongo
, dapat dilakukan dengan cara ini:sumber
pymongo
dependensi:epoch_time_hex = format(int(time.time()), 'x')
(jangan lupa menambahkan angka nol untuk kueri Anda) Paket waktu digunakan (import time
).Karena 4 byte pertama ObjectId mewakili cap waktu , untuk meminta koleksi Anda secara kronologis, cukup pesan dengan id:
Setelah Anda mendapatkan dokumen, Anda bisa mendapatkan ObjectId ini waktu generasi seperti:
sumber
bagaimana menemukan Find the Command (tanggal ini [2015-1-12] hingga Tanggal ini [2015-1-15]):
Hitung Perintah (tanggal ini [2015-1-12] hingga Tanggal ini [2015-1-15]):
Hapus Perintah (tanggal ini [2015-1-12] hingga Tanggal ini [2015-1-15]):
sumber
Anda bisa menggunakan
$convert
fungsi untuk mengekstrak tanggal dari ObjectId mulai versi 4.0.Sesuatu seperti
Anda dapat meminta tanggal membandingkan antara waktu mulai dan waktu berakhir untuk tanggal.
ATAU
Anda dapat menggunakan singkatan
$toDate
untuk mencapai hal yang sama.sumber
Untuk mendapatkan dokumen-dokumen lama 60 hari terakhir dalam koleksi mongo saya gunakan di bawah permintaan dalam shell.
sumber
Jika Anda ingin membuat kueri rentang, Anda bisa melakukannya seperti di posting ini . Misalnya permintaan untuk hari tertentu (mis. 4 April 2015):
sumber
Dari dokumentasi:
dengan cara ini Anda memiliki tanggal yang merupakan ISODate.
Lihatlah http://www.mongodb.org/display/DOCS/Optimating+Object+IDs#OptimizingObjectIDs-Extractinsioniontimesdromidrathanyadibandingkandenganmenyimpanandeparatetimestampfield . untuk informasi lebih lanjut
sumber
Menggunakan MongoObjectID Anda juga harus menemukan hasil seperti yang diberikan di bawah ini
sumber
Di rel,
mongoid
Anda dapat meminta menggunakansumber