Saya sepertinya tidak bisa mendapatkan bahkan query tanggal paling dasar untuk bekerja di MongoDB. Dengan dokumen yang terlihat seperti ini:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
Dan permintaan yang terlihat seperti ini:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
Saya mendapatkan 0 hasil dari mengeksekusi:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
Adakah yang tahu mengapa ini tidak berhasil?
Untuk referensi, kueri ini sedang diproduksi oleh Spring's MongoTemplate jadi saya tidak punya kendali langsung atas kueri yang akhirnya dikirim ke MongoDB.
(PS)
> db.version()
2.4.7
Terima kasih!
Query
objek di Musim Semi. Bentuk kueri berseri tidak selalu merupakan kueri yang valid yang bisa Anda salin / tempelkan ke mongo shell, yang dengan sendirinya agak membuat frustrasi. Pelakunya ada di sini: grepcode.com/file/repo1.maven.org/maven2/org.mongodb/…new Date('2016-03-09')
keISODate('2016-03-09')
. Yang pertama akan mengembalikan tanggal di masa lalu untuk$gte
permintaan.Dari komentar halaman buku resep MongoDB :
Ini berhasil untuk saya. Dalam konteks penuh, perintah berikut ini membuat setiap catatan di mana
dt
bidang tanggal memiliki tanggal pada 2013-10-01 (YYYY-MM-DD) Zulu:sumber
datetime.datetime
sama denganISODate
.Coba ini:
sumber
Saya menggunakan robomongo sebagai gui mongodb klien dan di bawah ini bekerja untuk saya
Di sisi aplikasi saya menggunakan mongodb driver berbasis nodejs (v1.4.3), aplikasi menggunakan datepicker di ui yang memberikan tanggal seperti YYYY-mm-dd, ini kemudian ditambahkan dengan waktu default seperti 00:00:00 dan kemudian diberikan ke
new Date()
konstruktor dan kemudian dipasok ke objek kriteria mongodb, saya pikir pengemudi mengubah tanggal menjadi tanggal ISO dan permintaan kemudian bekerja dan memberikan output yang diinginkan, namunnew Date()
konstruktor yang sama tidak berfungsi atau menampilkan output yang sama pada robo mongo, untuk hal yang sama kriteria, yang aneh, karena saya menggunakan robomongo untuk memeriksa objek kriteria saya.Sedangkan cli mongoshell default berfungsi baik dengan keduanya
ISODate
dannew Date()
sumber
Dalam mode ketat json, Anda harus menjaga urutan:
Hanya hal yang berfungsi untuk menentukan kueri penelusuran saya di mlab.com.
sumber
Dalam shell MongoDB:
Dalam kode nodeJS saya (menggunakan Mongoose)
Saya menanyakan koleksi acara sensor saya untuk mengembalikan nilai di mana bidang 'dari' lebih besar dari tanggal yang diberikan
sumber
ini dokumen saya
sekarang saya ingin menemukan setiap dokumen tanggal 27. jadi saya menggunakan ini ....
ini bekerja untuk saya.
sumber
Ini berfungsi untuk saya saat mencari nilai kurang dari atau sama dengan sekarang:
sumber
Bungkus dengan
new Date()
:sumber
Pertanyaan lama, tetapi masih hit google pertama, jadi saya posting di sini jadi saya menemukannya lagi dengan lebih mudah ...
Menggunakan Mongo 4.2 dan agregat ():
Yang ini memberi Anda variabel groupby sebagai tanggal, kadang-kadang lebih baik ditangani sebagai komponen itu sendiri.
sumber