Enligt din fråga vill du hämta aktuella dokument från en mongodb-samling . I mongoDB-skalet när du skriver new Date()
det ger dig aktuellt datum med tid och detta värde varierar alltid när du kör samma new Date()
så förmodligen är din fråga så här :
db.collectionName.find({"start_date":new Date()}).pretty()
Men jag tror att den här frågan returnerar de dokument som kommer att presenteras i din samling men samma nuvarande Date
värde kanske inte finns i dina dokument SÅ det här fallet bör du använda följande
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Eller
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
I vissa fall Om du vill hitta exakt matchning med year,month,day
då bör du använda aggregation
med $year,$month,$dayOfMonth i $project
så här :
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()
}
})
I ovanstående aggregeringsfråga returnerar de dokument som matchar aktuellt datum som year,month,day
aktuellt datum. Du ersätter också $match
som
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}