हाँ। आप दिनांक ऑपरेटरों का उपयोग कर सकते हैं $substr के साथ और $concat यह सब एक साथ बाँधने के लिए।
db.test.aggregate([
{"$group": {
"_id" : { "$concat": [
{"$substr": [{"$year": "$date"}, 0, 4 ]},
"-",
{"$substr": [{"$month": "$date"}, 0, 2 ]},
"-",
{"$substr": [{"$dayOfMonth": "$date"}, 0, 2 ]},
]},
"count": {"$sum": 1 }
}},
{"$sort": { "_id": 1 }}
])
आप केवल दिनांक ऑपरेटरों का उपयोग कर सकते हैं और एक दस्तावेज़ बना सकते हैं जैसे:
"day": {
"year": {"$year": "$date" },
"month": {"$month": "$date"},
"day": {"$dayOfYear": "$date"}
}
वही काम करता है। लेकिन यह आपको एक अच्छी स्ट्रिंग देता है। यह इस तथ्य का उपयोग करता है कि $substr
पूर्णांक से स्ट्रिंग में डाला जाएगा। अगर वह कभी भी दस्तावेज़ीकरण में जुड़ जाता है।
दिनांक ऑपरेटरों को देखें तारीखों पर इस्तेमाल किए जा सकने वाले अन्य टाइम डिवीजनों पर उपयोग के लिए दस्तावेज।
बेहतर अभी तक, बीएसओएन दिनांक वापस करने के लिए दिनांक गणित का उपयोग करें:
import datetime
db.test.aggregate([
{ "$group": {
"_id": {
"$add": [
{ "$subtract": [
{ "$subtract": [ "$date", datetime.datetime.utcfromtimestamp(0) ] },
{ "$mod": [
{ "$subtract": [ "$date", datetime.datetime.utcfromtimestamp(0) ] },
1000 * 60 * 60 * 24
]}
]},
datetime.datetime.utcfromtimestamp(0)
]
},
"count": { "$sum": 1 }
}},
{ "$sort": { "_id": 1 } }
])
यहां datetime.datetime.utcfromtimestamp(0)
"युग" का प्रतिनिधित्व करने वाली बीएसओएन तिथि के रूप में पाइपलाइन में खिलाया जाएगा। जब आप $subtract
एक बीएसओएन दिनांक दूसरे से मिलीसेकंड में अंतर वापस कर दिया जाता है। यह आपको $mod
एक दिन से शेष मिलीसेकंड का अंतर प्राप्त करने के लिए परिणाम।
$add
के बारे में भी यही सच है
जहां एक बीएसओएन तिथि को एक संख्यात्मक मान में "जोड़ने" के परिणामस्वरूप बीएसओएन तिथि होगी।