Apakah mungkin untuk meminta tanggal tertentu?
Saya menemukan di Cookbook mongo bahwa kita dapat melakukannya untuk rentang Permintaan untuk Rentang Tanggal Seperti itu:
db.posts.find({"created_on": {"$gte": start, "$lt": end}})
Tetapi apakah mungkin untuk tanggal tertentu? Ini tidak berfungsi:
db.posts.find({"created_on": new Date(2012, 7, 14) })
... 5+ tahun kemudian, saya sangat menyarankan menggunakan date-fns sebagai gantinya
Bagi kita yang menggunakan Moment.js
Penting: semua momen bisa berubah !
tomorrow = today.add(1, 'days')
tidak berfungsi karena ia juga bermutasitoday
. Memanggilmoment(today)
memecahkan masalah itu dengan kloning secara implisittoday
.sumber
.startOf('day')
.hours (0) .minutes (0) .seconds (0). Jadi baris pertama adalah:var today = moment().startOf('day')
moment(today)
untuk mengkloning objek, solusi lain adalah:var tomorrow = today.clone().add(1, 'days')
$lt
:moment(today).endOf('day')
. Untuk mencegah hasil aktual dari hari berikutnya dimasukkan.moment(today).endOf('day')
memberikan hari yang sama dengan waktu:23:59:59.999
. Jadi sebenarnya terlihat lebih tepat untuk digunakan$lte
, jika tidak objek pada waktu tertentu akan diabaikan.Ya, objek Date sesuai dengan tanggal dan waktu, jadi membandingkannya dengan nilai date saja tidak berfungsi.
Anda cukup menggunakan operator $ where untuk mengekspresikan kondisi yang lebih rumit dengan ekspresi boolean Javascript :)
created_on
adalah bidang datetime dan2012-07-14
merupakan tanggal yang ditentukan.Tanggal harus persis dalam format YYYY-MM-DD .
Catatan: Gunakan
$where
hemat, ini memiliki implikasi kinerja.sumber
Sudahkah Anda mencoba:
Masalah yang akan Anda hadapi adalah bahwa tanggal disimpan sebagai cap waktu dalam bahasa Mongo. Jadi, untuk mencocokkan tanggal Anda memintanya untuk mencocokkan cap waktu. Dalam kasus Anda, saya pikir Anda mencoba mencocokkan satu hari (mis. Mulai pukul 00:00 hingga 23:59 pada tanggal tertentu). Jika kencan Anda disimpan tanpa waktu maka Anda harus baik-baik saja. Jika tidak, coba tentukan tanggal Anda sebagai rentang waktu pada hari yang sama (mis. Mulai = 00: 00, akhir = 23: 59) jika gte tidak berfungsi.
pertanyaan serupa
sumber
$gte
bukannyagte
akan lebih baik.Anda dapat menggunakan pendekatan berikut untuk metode API untuk mendapatkan hasil dari hari tertentu:
sumber
Kami memiliki masalah yang berkaitan dengan data duplikat dalam database kami, dengan bidang tanggal memiliki beberapa nilai di mana kami seharusnya memiliki 1. Saya pikir saya akan menambahkan cara kami menyelesaikan masalah untuk referensi.
Kami memiliki koleksi yang disebut "data" dengan bidang "nilai" numerik dan bidang "tanggal". Kami memiliki proses yang kami pikir idempoten, tetapi akhirnya menambahkan 2 x nilai per hari pada putaran kedua:
Kami hanya perlu 1 dari 2 catatan, jadi harus menggunakan javascript untuk membersihkan db. Pendekatan awal kami akan beralih melalui hasil dan menghapus bidang apa pun dengan waktu antara 06:00 dan 11:00 (semua duplikat di pagi hari), tetapi selama implementasi, membuat perubahan. Berikut skrip yang digunakan untuk memperbaikinya:
dan kemudian menjalankannya
mongo thedatabase fixer_script.js
sumber