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

पायमोंगो कुल:फ़ील्ड संख्या (गतिशील) की गिनती से फ़िल्टर करें

हां, अब आप एक एग्रीगेशन ऑपरेटर का उपयोग कर सकते हैं $objectToArray (SERVER-23310 ) कुंजियों को मानों में बदलने के लिए। यह 'गतिशील' क्षेत्रों की संख्या गिनने में सक्षम होना चाहिए। इस ऑपरेटर को $addFields के साथ जोड़ना काफी उपयोगी हो सकता है।

दोनों ऑपरेटर MongoDB v3.4.4+ में उपलब्ध हैं, उदाहरण के लिए ऊपर दिए गए आपके दस्तावेज़ों का उपयोग करना:

db.sports.aggregate([
          { $addFields : 
             { "numFields" : 
               { $size:
                 { $objectToArray:"$$ROOT"}
               }
             }
          }, 
          { $match: 
            { numFields: 
              {$gt:2}
            }
          }
])

उपरोक्त एकत्रीकरण पाइपलाइन, पहले numFields . नामक एक फ़ील्ड जोड़ेगी . मान एक सरणी का आकार होगा। सरणी में दस्तावेज़ में फ़ील्ड की संख्या होगी। दूसरा चरण केवल 2 और अधिक फ़ील्ड के लिए फ़िल्टर करेगा (दो फ़ील्ड क्योंकि अभी भी _id . है फ़ील्ड प्लस name )

PyMongo में , उपरोक्त एकत्रीकरण पाइपलाइन इस तरह दिखेगी:

cursor = collection.aggregate([
                         {"$addFields":{"numFields":
                                         {"$size":{"$objectToArray":"$$ROOT"}}}}, 
                         {"$match":{"numFields":{"$gt":2}}}
         ])

उपरोक्त कहने के बाद, यदि आपके उपयोग के मामले में संभव हो, तो मैं आपके डेटा मॉडल पर पुनर्विचार करने का सुझाव दूंगा। आसान पहुंच के लिए। यानी जब कोई नई खेल स्थिति डाली जाती है/जोड़ा जाता है तो खेलों की संख्या का ट्रैक रखने के लिए एक नया क्षेत्र जोड़ें।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB C#:आईडी क्रमांकन सर्वोत्तम पैटर्न

  2. मोंगो डीबी संग्रह पर सीमा निर्धारित करें

  3. एक अलग सिस्टम में एक मोंगोडीबी क्वेरी भेजना:जेएसओएन में कनवर्ट करना और फिर बीएसओएन में डीकोडिंग करना? इसे गो भाषा में कैसे करें?

  4. जावा का उपयोग करके मोंगोडीबी में खुले कनेक्शन की संख्या प्राप्त करें

  5. MongoDB जावा में डालने की विफलता को संभालता है