Sử dụng $redact kết hợp $hour để lọc document theo giờ của trường ISODate. Tạo collection:
> db.demo178.insertOne({ "DueDate": new ISODate("2019-01-10T06:18:20.474Z") });
{ "acknowledged": true, "insertedId": ObjectId("5e397bd89e4f06af551997f5") }
> db.demo178.insertOne({ "DueDate": new ISODate("2020-11-10T18:05:11.474Z") });
{ "acknowledged": true, "insertedId": ObjectId("5e397bf39e4f06af551997f6") }
> db.demo178.insertOne({ "DueDate": new ISODate("2020-03-15T07:05:10.474Z") });
{ "acknowledged": true, "insertedId": ObjectId("5e397c039e4f06af551997f7") }
> db.demo178.insertOne({ "DueDate": new ISODate("2020-06-11T16:05:10.474Z") });
{ "acknowledged": true, "insertedId": ObjectId("5e397c0f9e4f06af551997f8") }
Hiển thị document.
Truy vấn aggregate $redact giữ document có giờ DueDate từ 6 đến 8 (gt 5 và lt 9):
> db.demo178.aggregate([{
"$redact": {
"$cond": {
"if": {
"$and": [
{ "$gt": [{ "$hour": "$DueDate" }, 5] },
{ "$lt": [{ "$hour": "$DueDate" }, 9] }
]
},
"then": "$$KEEP",
"else": "$$PRUNE"
}
}
}])
Kết quả (2 document khớp giờ 6 và 7):
{
"_id": ObjectId("5e397bd89e4f06af551997f5"),
"DueDate": ISODate("2019-01-10T06:18:20.474Z")
}
{
"_id": ObjectId("5e397c039e4f06af551997f7"),
"DueDate": ISODate("2020-03-15T07:05:10.474Z")
}