$redact और $hour ऑपरेटर से घंटे की रेंज द्वारा फ़िल्टर करें
MongoDB एग्रीगेशन में $redact स्टेज का उपयोग करके डॉक्यूमेंट्स को फ़िल्टर करें जहां डेट फ़ील्ड का घंटा (hour) एक विशिष्ट रेंज में हो।
उदाहरण: संग्रह बनाना
> 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") }
सभी डॉक्यूमेंट्स देखना
> db.demo178.find();
{ "_id": ObjectId("5e397bd89e4f06af551997f5"), "DueDate": ISODate("2019-01-10T06:18:20.474Z") }
{ "_id": ObjectId("5e397bf39e4f06af551997f6"), "DueDate": ISODate("2020-11-10T18:05:11.474Z") }
{ "_id": ObjectId("5e397c039e4f06af551997f7"), "DueDate": ISODate("2020-03-15T07:05:10.474Z") }
{ "_id": ObjectId("5e397c0f9e4f06af551997f8"), "DueDate": ISODate("2020-06-11T16:05:10.474Z") }
घंटे की रेंज (5 से 9) में डेट रिकॉर्ड्स प्राप्त करने की क्वेरी
> db.demo178.aggregate([{
"$redact": {
"$cond": {
"if": {
"$and": [
{ "$gt": [{ "$hour": "$DueDate" }, 5] },
{ "$lt": [{ "$hour": "$DueDate" }, 9] }
]
},
"then": "$$KEEP",
"else": "$$PRUNE"
}
}
}])
आउटपुट:
{ "_id": ObjectId("5e397bd89e4f06af551997f5"), "DueDate": ISODate("2019-01-10T06:18:20.474Z") }
{ "_id": ObjectId("5e397c039e4f06af551997f7"), "DueDate": ISODate("2020-03-15T07:05:10.474Z") }
केवल वे डॉक्यूमेंट्स लौटाए गए जिनका घंटा 6 और 7 है (यानी 5 से बड़ा और 9 से छोटा)।
नोट:
$redactडॉक्यूमेंट को प्रून (छाँट) करता है। सरल रेंज क्वेरी के लिए$matchके साथ$gte/$ltISODate स्ट्रिंग्स पर अधिक कुशल होते हैं।