MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब समुच्चय (गिनती) एक साथ कई क्षेत्रों पर

एकत्रीकरण ढांचा डेटा के आधार पर कुंजी नहीं बनाएगा, न ही चाहिए आप ऐसा इसलिए भी कर रहे हैं क्योंकि "डेटा" एक कुंजी नहीं बल्कि वास्तव में डेटा है, इसलिए आपको पैटर्न से चिपके रहना चाहिए।

इसका मतलब है कि आप मूल रूप से ऐसा कर सकते हैं:

db.data.aggregate([
    { "$group": {
        "_id": {
            "event_type": "$event",
            "day": { "$dayOfWeek": "$date" }
        },
        "count": { "$sum": 1 } 
    }}
])

और वह प्रति घटना सप्ताह के प्रति दिन की घटनाओं की गणना करेगा, हालांकि आउटपुट में कई दस्तावेज़ों में, लेकिन प्रति ईवेंट एकल दस्तावेज़ में बदलना आसान है:

db.data.aggregate([
    { "$group": {
        "_id": {
            "event_type": "$event",
            "day": { "$dayOfWeek": "$date" }
        },
        "count": { "$sum": 1 } 
    }},
    { "$group": {
        "_id": "$_id.event_type",
        "days": { "$push": { "day": "$_id.day", "count": "$count" } }
    }}
])

और यह एक सरणी रूप में है, लेकिन यह अभी भी आपके इच्छित परिणाम रखता है।

यदि आप वास्तव में अपना सटीक रूप करने पर तुले हुए हैं तो आप कुछ ऐसा करना चाहते हैं:

db.data.aggregate([
    { "$group": {
        "_id": "$event",
        "1": {
            "$sum": {
                "$cond": [
                    { "$eq": [{ "$dayOfWeek": "$date" }, 1 ] },
                    1,
                    0
                ]
            }
        },
        "2": {
            "$sum": {
                "$cond": [
                    { "$eq": [{ "$dayOfWeek": "$date" }, 2 ] },
                    1,
                    0
                ]
            }
        },
        "3": {
            "$sum": {
                "$cond": [
                    { "$eq": [{ "$dayOfWeek": "$date" }, 3 ] },
                    1,
                    0
                ]
            }
        },
        "4": {
            "$sum": {
                "$cond": [
                    { "$eq": [{ "$dayOfWeek": "$date" }, 4 ] },
                    1,
                    0
                ]
            }
        },
        "5": {
            "$sum": {
                "$cond": [
                    { "$eq": [{ "$dayOfWeek": "$date" }, 5 ] },
                    1,
                    0
                ]
            }
        },
        "6": {
            "$sum": {
                "$cond": [
                    { "$eq": [{ "$dayOfWeek": "$date" }, 6 ] },
                    1,
                    0
                ]
            }
        },
        "7": {
            "$sum": {
                "$cond": [
                    { "$eq": [{ "$dayOfWeek": "$date" }, 7 ] },
                    1,
                    0
                ]
            }
        }
    }}
)

लेकिन यह वास्तव में लंबा घुमावदार है इसलिए आईएमएचओ मैं पहले या शायद दूसरे समाधान के साथ रहूंगा क्योंकि वे छोटे और पढ़ने में अधिक आसान हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला वैकल्पिक खोज क्वेरी पैरामीटर?

  2. क्या कोई कारण हैं कि मुझे अपने रीस्टफुल यूआरएल में ऑब्जेक्ट आईडी का उपयोग क्यों नहीं करना चाहिए/नहीं करना चाहिए?

  3. MongoDB डिफ़ॉल्ट उपयोगकर्ता और पासवर्ड क्या हैं?

  4. कैसे डुप्लिकेट कुंजी त्रुटियों को सुरक्षित रूप से insert_many का उपयोग करके अनदेखा करें

  5. MongoDB में सुविधा संगतता संस्करण कैसे सेट करें?