Zgodnie z Twoim pytaniem chcesz pobrać dokumenty z bieżącego dnia z kolekcji mongodb . W powłoce mongoDB po wpisaniu new Date()
daje ci aktualną datę z czasem, a ta wartość zawsze się zmienia, gdy uruchamiasz tę samą new Date()
więc prawdopodobnie Twoje zapytanie jest takie :
db.collectionName.find({"start_date":new Date()}).pretty()
Ale myślę, że to zapytanie zwraca te dokumenty, które będą prezentowane w Twojej kolekcji, ale tę samą aktualną Date
wartość może nie być obecna w twoich dokumentach, więc w tym przypadku powinieneś użyć następujących
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Lub
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
W niektórych przypadkach, jeśli chcesz znaleźć dokładne dopasowanie za pomocą year,month,day
wtedy powinieneś użyć agregacji
z $rok,$miesiąc,$dzieńMiesiąca w $projektu
tak :
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()
}
})
W powyższym zapytaniu agregującym zwróci te dokumenty, które pasują do aktualnej daty, np. year,month,day
z bieżącej daty. Zamieniasz także $match
jako
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}