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

मोंगोडब में एकत्रीकरण का उपयोग करके अधिकतम मूल्य वाले सभी दस्तावेज प्राप्त करें

यदि आप दस्तावेज़ की जानकारी रखना चाहते हैं, तो आपको मूल रूप से की आवश्यकता होगी। $push इसे एक सरणी में। लेकिन निश्चित रूप से, फिर आपके पास $max मानों के लिए, आपको केवल मेल खाने वाले तत्वों के लिए सरणी की सामग्री को फ़िल्टर करने की आवश्यकता है:

db.coll.aggregate([
    { "$group":{ 
        "_id": "$country",
        "maxQuantity": { "$max": "$quantity" },
        "docs": { "$push": {
            "_id": "$_id",
            "name": "$name",
            "quantity": "$quantity"
        }}
    }},
    { "$project": {
        "maxQuantity": 1,
        "docs": {
            "$setDifference": [
               { "$map": {
                   "input": "$docs",
                   "as": "doc",
                   "in": {
                       "$cond": [ 
                           { "$eq": [ "$maxQuantity", "$$doc.quantity" ] },
                           "$$doc",
                           false
                       ]
                   }
               }},
               [false]
            ]
        }
    }}
])

तो आप सब कुछ एक सरणी में संग्रहीत करते हैं और फिर प्रत्येक सरणी सदस्य का परीक्षण यह देखने के लिए करते हैं कि क्या यह मान अधिकतम के रूप में दर्ज किए गए मान से मेल खाता है, जो नहीं करता है उसे छोड़कर।

मैं _id रखूंगा सरणी दस्तावेज़ों में मान क्योंकि यही उन्हें "अद्वितीय" बनाता है और $setDifference मानों को फ़िल्टर करते समय। लेकिन निश्चित रूप से यदि "नाम" हमेशा अद्वितीय है तो इसकी आवश्यकता नहीं होगी।

$map , लेकिन उदाहरण के लिए मैं अभी पूरा दस्तावेज़ लौटा रहा हूँ।

ध्यान रखें कि इसमें 16 एमबी की बीएसओएन आकार सीमा से अधिक नहीं होने की सीमा है, इसलिए छोटे डेटा नमूने के लिए ठीक है, लेकिन संभावित रूप से बड़ी सूची बनाने वाली कोई भी चीज़ (चूंकि आप सरणी सामग्री को पूर्व-फ़िल्टर नहीं कर सकते हैं) एक के साथ संसाधित होने के लिए बेहतर होगा अलग क्वेरी "अधिकतम" मान खोजने के लिए, और दूसरा मिलान दस्तावेज़ लाने के लिए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब में आईएसओडेट के साथ दिनांक क्वेरी काम नहीं कर रही है

  2. मोंगोडीबी:उस आइटम के किसी अन्य फ़ील्ड से मेल खाने के साथ किसी आइटम के फ़ील्ड को सरणी में अपडेट करें

  3. मोंगोइड में अद्वितीय एम्बेडेड दस्तावेज़ कैसे लागू करें

  4. मोंगोडब में अद्यतन दस्तावेजों की संख्या को कैसे सीमित करें

  5. सेलजेएस और मोंगो अद्वितीय विशेषता पर ध्यान नहीं दिया जाता है