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

वस्तुओं के नेस्टेड सरणी से वस्तु को हटाना mongodb

आप "दस्तावेज़" से मेल खाने के लिए कुछ निर्दिष्ट करके और फिर आवश्यक "शिफ्ट" सरणी प्रविष्टि को .update() के लिए क्वेरी अभिव्यक्ति के रूप में निर्दिष्ट करके ऐसा कर सकते हैं। . फिर स्थितिगत $ लागू करें ऑपरेटर $pull के साथ सुमेलित सरणी अनुक्रमणिका के लिए :

db.collection.update(
 { "_id": ObjectId("59180305c19dbaa4ecd9ee59"), "shifts.timeslot": "8:00 - NOON" },
 { "$pull": { "shifts.$.volunteers": { "fullname": "Mary Mack" } } }
)

इस उदाहरण में यह ठीक है क्योंकि आप केवल नेस्टेड संरचना में "बाहरी" सरणी पर "मिलान" करने का प्रयास कर रहे हैं और $pull हटाने के लिए सरणी प्रविष्टि की पहचान करने के लिए स्वयं के क्वेरी तर्क हैं।

यद्यपि आपको "नेस्टेड सरणी" का उपयोग करके वास्तव में सावधान रहना चाहिए। जबकि एक $pull इस तरह का ऑपरेशन काम करता है, "आंतरिक" सरणी के अपडेट वास्तव में संभव नहीं हैं क्योंकि स्थितीय $ ऑपरेटर केवल "पहले" तत्व से मेल खाएगा जो शर्त को पूरा करता है। तो कई पारियों में "मैरी मैक" का आपका उदाहरण केवल पहली "शिफ्ट" सरणी प्रविष्टि से मेल खाएगा।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला स्कीमा में सरणी में डेटा कैसे जोड़ें

  2. क्या मोंगोडीबी क्वेरी में सख्त JSON $ date का उपयोग किया जा सकता है?

  3. mongoengine का उपयोग करके mongodb में बहु दस्तावेज़ सम्मिलित करें

  4. नया सी ++ मोंगो ड्राइवर:प्रकार कैसे देखें और स्ट्रिंग मान कैसे प्राप्त करें

  5. System.FormatException' MongoDB.Bson.dll में हुई - XXX मान्य 24 अंकों वाली हेक्स स्ट्रिंग नहीं है