Volgens uw vraag wilt u actuele documenten ophalen uit een mongodb-verzameling . In mongoDB-shell wanneer u new Date()
. typt het geeft je de huidige datum met de tijd en deze waarde varieert altijd wanneer je dezelfde new Date()
uitvoert dus waarschijnlijk is uw vraag als volgt:
db.collectionName.find({"start_date":new Date()}).pretty()
Maar ik denk dat deze zoekopdracht de documenten retourneert die in uw verzameling worden weergegeven, maar met dezelfde huidige Date
waarde is mogelijk niet aanwezig in uw documenten, dus in dit geval moet u het volgende gebruiken
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Of
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
In sommige gevallen Als u een exacte overeenkomst wilt vinden met year,month,day
dan moet je aggregatie
gebruiken met $year,$month,$dayOfMonth in $project
zoals dit:
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()
}
})
In de bovenstaande aggregatiequery worden de documenten geretourneerd die overeenkomen met de huidige datum, zoals year,month,day
van de huidige datum. Ook vervang je $match
als
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}