Според въпроса ви искате да извлечете текущи документи от колекция на mongodb . В обвивката на mongoDB, когато въведете new Date()
дава ви текуща дата с време и тази стойност винаги варира, когато стартирате същата new Date()
така че вероятно вашата заявка е следната:
db.collectionName.find({"start_date":new Date()}).pretty()
Но мисля, че тази заявка връща тези документи, които ще присъстват във вашата колекция, но със същата текуща Date
стойността може да не присъства във вашите документи, така че в този случай трябва да използвате следното
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Или
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
В някои случаи, ако искате да намерите точно съвпадение с year,month,day
тогава трябва да използвате агрегиране
с $year,$month,$dayOfMonth в $project
като това :
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()
}
})
В горната заявка за агрегиране ще върне онези документи, които съответстват на текущата дата като year,month,day
от текуща дата. Също така замествате $match
като
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}