Gemäß Ihrer Frage möchten Sie aktuelle Tagesdokumente aus einer Mongodb-Sammlung abrufen . In der MongoDB-Shell, wenn Sie new Date()
eingeben Es gibt Ihnen das aktuelle Datum mit Uhrzeit und dieser Wert variiert immer, wenn Sie dasselbe new Date()
ausführen also wahrscheinlich Ihre Abfrage so:
db.collectionName.find({"start_date":new Date()}).pretty()
Aber ich denke, diese Abfrage gibt die Dokumente zurück, die in Ihrer Sammlung präsentiert werden, aber dasselbe aktuelle Date
Der Wert ist in Ihren Dokumenten möglicherweise nicht vorhanden. In diesem Fall sollten Sie also das folgende
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Oder
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
In einigen Fällen, wenn Sie eine genaue Übereinstimmung mit year,month,day
finden möchten dann sollten Sie die Aggregation
verwenden mit $year,$month,$dayOfMonth in $project
so :
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()
}
})
Die obige Aggregationsabfrage gibt die Dokumente zurück, die mit dem aktuellen Datum übereinstimmen, wie year,month,day
des aktuellen Datums. Außerdem ersetzen Sie $match
als
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}