यहां मूल अवधारणा यह है कि आपकी क्वेरी को "जागरूक" बनाया जाए कि दी गई क्वेरी अवधि के लिए "दिन के उजाले की बचत" दोनों "शुरू" और "समाप्त" होती है और बस इस परीक्षण को $cond
यह निर्धारित करने के लिए कि किस "ऑफ़सेट" का उपयोग करना है:
db.collection.aggregate([
{ "$group": {
"_id": {
"$week": {
"$add": [
"$Timestamp",
{ "$cond": [
{ "$and": [
{ "$gte": [
{ "$dayOfyear": "$Timestamp" },
daylightSavingsStartDay
]},
{ "$lt": [
{ "$dayOfYear": "$Timestamp" },
daylightSavingsEndDay
]}
]},
daylightSavingsOffset,
normalOffset
]}
]
}
},
"min": { "$min": "$Timestamp" }
}}
])
तो आप कई वर्षों को कवर करते समय इसे थोड़ा और जटिल बना सकते हैं, लेकिन यह अभी भी मूल सिद्धांत है। दक्षिणी गोलार्ध में आप हमेशा होते हैं एक वर्ष तक फैली हुई है, इसलिए प्रत्येक शर्त "शुरुआत" से "वर्ष के अंत" और "वर्ष की शुरुआत" से "अंत" की "सीमा" होगी। इसलिए एक $or
एक आंतरिक $and
. के साथ "रेंज" के भीतर ऑपरेटरों ने प्रदर्शन किया।
यदि आपके पास लागू करने के लिए अलग-अलग मान हैं, तो पता लगाएं कि आपको कब "चाहिए" चुनना चाहिए और फिर $cond
।