Selon votre question vous souhaitez récupérer les documents actuels d'une collection mongodb . Dans le shell mongoDB lorsque vous tapez new Date()
il vous donne la date actuelle avec l'heure et cette valeur varie toujours lorsque vous exécutez le même new Date()
donc probablement votre requête comme celle-ci :
db.collectionName.find({"start_date":new Date()}).pretty()
Mais, je pense que cette requête renvoie les documents qui seront présents dans votre collection mais la même Date
actuelle la valeur peut ne pas être présente dans vos documents DONC ce cas, vous devez utiliser ce qui suit
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Ou
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
Dans certains cas, si vous souhaitez trouver une correspondance exacte avec year,month,day
alors vous devez utiliser agrégation
avec $year,$month,$dayOfMonth in $project
comme ça :
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()
}
})
Dans la requête d'agrégation ci-dessus renverra les documents qui correspondent à la date actuelle comme year,month,day
de la date actuelle. Vous remplacez également $match
comme
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}