Theo câu hỏi của bạn bạn muốn tìm nạp tài liệu ngày hiện tại từ bộ sưu tập mongodb . Trong trình bao mongoDB khi bạn nhập new Date()
nó cung cấp cho bạn ngày hiện tại cùng với thời gian và giá trị này luôn thay đổi khi bạn chạy cùng một new Date()
vì vậy có thể truy vấn của bạn như thế này:
db.collectionName.find({"start_date":new Date()}).pretty()
Tuy nhiên, tôi nghĩ rằng truy vấn này trả về những tài liệu sẽ xuất hiện trong bộ sưu tập của bạn nhưng có cùng Date
hiện tại giá trị có thể không được trình bày trong tài liệu của bạn VÌ trường hợp này bạn nên sử dụng sau
db.collectionName.find({"start_date":{"$lte":new Date()}}).pretty()
Hoặc
db.collectionName.find({"start_date":{"$gte":new Date()}}).pretty()
Trong một số trường hợp, Nếu bạn muốn tìm đối sánh chính xác với year,month,day
thì bạn nên sử dụng tổng hợp
với $ năm, $ tháng, $ dayOfMonth trong $ dự án
như thế này:
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()
}
})
Trong truy vấn tổng hợp ở trên sẽ trả về những tài liệu khớp với ngày hiện tại như year,month,day
của ngày hiện tại. Ngoài ra, bạn thay thế $match
như
var currentDate = new Date()
{
"$match": {
"year": currentDate.getFullYear(),
"month": currentDate.getMonth() + 1, //because January starts with 0
"day": currentDate.getDate()
}
}