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

सरणी मानों के योग के साथ MongoDB एकत्रीकरण

एकत्रीकरण ढांचे के साथ अपनी आवश्यकताओं को प्राप्त करने के लिए, पहला पाइपलाइन चरण एक $match होगा विचाराधीन यात्री पर ऑपरेशन जो यात्री सरणी में उपयोगकर्ता के साथ दस्तावेज़ों से मेल खाता है, उसके बाद $unwind ऑपरेशन जो प्रत्येक तत्व के लिए एक दस्तावेज़ को आउटपुट करने के लिए पिछले ऑपरेशन में इनपुट दस्तावेज़ों से यात्रियों की सरणी को डीकंस्ट्रक्ट करता है। एक और $match deconstructed सरणी पर संचालन इस प्रकार है कि आगे पिछले दस्तावेज़ स्ट्रीम को फ़िल्टर करता है ताकि केवल मिलान करने वाले दस्तावेज़ों को अगले पाइपलाइन चरण में असंशोधित पास किया जा सके, जो आवश्यक फ़ील्ड को $project के साथ प्रोजेक्ट कर रहा है। ऑपरेटर। तो अनिवार्य रूप से user3 . के लिए आपकी एकत्रीकरण पाइपलाइन इस तरह होगा:

db.collection.aggregate([
     {
        "$match": {
            "passengers.user": "user3"
        }
     },
     {
         "$unwind": "$passengers"
     },
     {
        "$match": {
            "passengers.user": "user3"
        }
     },
     {
         "$project": {
             "_id": 0,
            "driver": "$driver",
            "times": "$passengers.times"
        }
     }
])

परिणाम :

/* 0 */
{
    "result" : [ 
        {
            "driver" : "user1",
            "times" : 3
        }, 
        {
            "driver" : "user2",
            "times" : 2
        }
    ],
    "ok" : 1
}

अपडेट करें :

अलग-अलग तिथियों वाले ड्राइवरों पर डुप्लीकेट समूह बनाने के लिए, जैसा कि आपने उल्लेख किया है, आप $group कर सकते हैं पिछले $project . से ठीक पहले ऑपरेशन पाइपलाइन चरण जहां आप $sum . का उपयोग करके यात्रियों के कुल समय की गणना करते हैं ऑपरेटर:

db.collection.aggregate([
     {
        "$match": {
            "passengers.user": "user3"
        }
     },
     {
         "$unwind": "$passengers"
     },
     {
        "$match": {
            "passengers.user": "user3"
        }
     },
     {
         "$group": {
             "_id": "$driver", 
             "total": {
                 "$sum": "$passengers.times"
             }
         }
     },
     {
         "$project": {
            "_id": 0,
            "driver": "$_id",
            "total": 1
        }
     }
])

परिणाम :

/* 0 */
{
    "result" : [ 
        {
            "total" : 2,
            "driver" : "user2"
        }, 
        {
            "total" : 3,
            "driver" : "user1"
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB C# ड्राइवर 2.0 - दस्तावेज़ अपडेट करें

  2. मोंगोडीबी एसक्यूएल इंजेक्शन गड़बड़ी से कैसे बचता है?

  3. MongoDB - सरणी में वस्तु को अद्यतन या सम्मिलित करें

  4. Mongoose/MongoDB परिणाम फ़ील्ड जावास्क्रिप्ट में अपरिभाषित दिखाई देते हैं

  5. मैं किसी फ़ाइल को MongoDB में कैसे सहेजूँ?