Nếu bạn muốn chọn các bản ghi thì hãy sử dụng phạm vi ngày:
db.collection.find({
created: { "$gte": new Date("2013-05-27"), "$lt": new Date("2013-05-28") }
})
Và điều đó chọn tất cả các giờ, phút, v.v., nằm giữa hai ngày.
Vì vậy, bạn nên đang cố gắng sử dụng các giá trị ngày tháng và không ép buộc thành chuỗi.
Nếu bạn muốn điều này để thực hiện tổng hợp hoặc cần kết quả ở định dạng chỉ trong ngày, sau đó thực hiện việc này bằng cách sử dụng $ project và ngày toán tử :
db.collection.aggregate([
// Still match on the normal date forms, this time whole month
{ "$match": {
created: {
"$gte": new Date("2013-05-01"),
"$lt": new Date("2013-05-31")
}
}},
// Project the date
{ "$project": {
"date": {
"year" : { "$year" : "$created" },
"month" : { "$month" : "$created" },
"day": : { "$dayOfMonth": "$created" }
},
"title": 1
}},
// Group on day and title
{ "$group": {
"_id": {
"date" : "$date",
"title" : "$title"
},
"count": { "$sum": 1 }
}},
// Sort by date
{ "$sort": {
"_id.date.year": 1,
"_id.date.month": 1,
"_id.date.day": 1,
}},
// Project nicer dates and document
{ "$project": {
"_id": 0,
"date": { "$concat": [
{ "$substr": [ "$_id.date.year", 0, 4 ] },
"-",
{ "$substr": [ "$_id.date.month", 0, 2 ] },
"-",
{ "$substr": [ "$_id.date.day", 0, 2 ] }
]},
"title": "$_id.title",
"count": 1
}}
])