Som pr. dit spørgsmål ønsker du at hente aktuelle dagsdokumenter fra en mongodb-samling . I mongoDB shell når du skriver new Date()
det giver dig aktuel dato med tid, og denne værdi varierer altid, når du kører den samme new Date()
så sandsynligvis er din forespørgsel sådan her :
db.collectionName.find({"start_date":new Date()}).pretty()
Men jeg tror, at denne forespørgsel returnerer de dokumenter, som vil præsenteres i din samling, men den samme aktuelle Date
værdi er muligvis ikke til stede i dine dokumenter, SÅ denne sag skal du bruge følgende
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Eller
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
I nogle tilfælde Hvis du ønsker at finde nøjagtig match med year,month,day
så skal du bruge aggregation
med $year,$month,$dayOfMonth i $project
sådan her :
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 ovenstående aggregeringsforespørgsel returnerer de dokumenter, der matcher den aktuelle dato, såsom year,month,day
af nuværende dato. Du erstatter også $match
som
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}