Sesuai pertanyaan Anda Anda ingin mengambil dokumen hari ini dari koleksi mongodb . Di shell mongoDB saat Anda mengetik new Date()
ini memberi Anda tanggal saat ini dengan waktu dan nilai ini selalu bervariasi ketika Anda menjalankan new Date()
. yang sama jadi mungkin permintaan Anda seperti ini :
db.collectionName.find({"start_date":new Date()}).pretty()
Tapi, saya pikir kueri ini mengembalikan dokumen-dokumen yang akan disajikan dalam koleksi Anda tetapi Date
yang sama saat ini nilai mungkin tidak ada dalam dokumen Anda SO hal ini Anda harus menggunakan berikut
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Atau
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
Dalam beberapa kasus Jika Anda ingin menemukan kecocokan yang tepat dengan year,month,day
maka Anda harus menggunakan agregasi
dengan $year,$month,$dayOfMonth di $project
seperti ini :
db.collectionName.aggregate({
"$project": {
"year": {
"$year": "$date"
},
"month": {
"$month": "$date"
},
"day": {
"$dayOfMonth": "$date"
}
}
}, {
"$match": {
"year": new Date().getFullYear(),
"month": new Date().getMonth() + 1, //because January starts with 0
"day": new Date().getDate()
}
})
Dalam kueri agregasi di atas akan mengembalikan dokumen-dokumen yang cocok dengan tanggal saat ini seperti year,month,day
dari tanggal saat ini. Anda juga mengganti $match
sebagai
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}