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

अनेक दिनांक सीमाओं के लिए कुल $group

वर्तमान तिथि सीमा के बीच कहां आती है, इसके आधार पर आपको समूहीकरण कुंजी को सशर्त रूप से निर्धारित करने की आवश्यकता है। यह मूल रूप से $cond के ज़रिए हासिल किया जाता है नेस्टेड शर्तों और $lt<के तार्किक संस्करण के साथ /कोड> :

// work out dates somehow
var today = new Date(),
    oneDay = ( 1000 * 60 * 60 * 24 ),
    thirtyDays = new Date( today.valueOf() - ( 30 * oneDay ) ),
    fifteenDays = new Date( today.valueOf() - ( 15 * oneDay ) ),
    sevenDays = new Date( today.valueOf() - ( 7 * oneDay ) );

db.collection.aggregate([
    { "$match": {
        "date": { "$gte": thirtyDays }
    }},
    { "$group": {
        "_id": {
            "$cond": [
                { "$lt": [ "$date", fifteenDays ] },
                "16-30",
                { "$cond": [
                    { "$lt": [ "$date", sevenDays ] },
                    "08-15",
                    "01-07"
                ]}
            ]
        },
        "count": { "$sum": 1 },
        "totalValue": { "$sum": "$value" }
    }}
])

$cond . के रूप में एक टर्नरी ऑपरेटर है, पहली शर्त का मूल्यांकन यह देखने के लिए किया जाता है कि क्या स्थिति सत्य है, और जब सत्य है तो दूसरा तर्क वापस कर दिया जाता है अन्यथा गलत होने पर तीसरा वापस कर दिया जाता है। तो एक और $cond नेस्ट करके झूठे मामले में आपको तार्किक परीक्षण मिलता है जहां तारीख गिरती है, या तो "15 दिन की तारीख से कम" जिसका अर्थ है कि यह सबसे पुरानी सीमा में है, या "7 दिनों से कम" जिसका अर्थ मध्य सीमा है, या निश्चित रूप से यह अंदर है नवीनतम श्रेणी।

मैं यहां केवल 10 से कम की संख्याओं को 0 . के साथ उपसर्ग कर रहा हूं इसलिए यदि आप चाहते हैं तो यह आपको क्रमबद्ध करने के लिए कुछ देता है, क्योंकि $group में "कुंजी" के आउटपुट के बाद से अपने आप में आदेशित नहीं है।

लेकिन इस तरह आप इसे एक ही प्रश्न में करते हैं। आप केवल यह निर्धारित करते हैं कि समूह कुंजी क्या होनी चाहिए, इस पर आधारित होना चाहिए कि प्रत्येक कुंजी के लिए दिनांक कहां गिरती है और जमा होती है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कुल दस्तावेज़ जहां सरणी में ऑब्जेक्ट कई स्थितियों से मेल खाते हैं

  2. क्लाइंट नियंत्रक (MEAN.JS) से मोंगो क्वेरी पैरामीटर निर्दिष्ट करना

  3. नोडज का उपयोग करके मोंगोडब की दास स्थिति कैसे प्राप्त करें?

  4. जावा का उपयोग करके मोंगोडीबी संग्रह में जावा ऑब्जेक्ट डालना

  5. MongoDB स्काला - एक विशिष्ट फ़ील्ड मान के लिए क्वेरी दस्तावेज़