MongoDB, सरणी से ऑब्जेक्ट निकालें


90

डॉक्टर:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name,
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]
}

क्या किसी सरणी से किसी विशिष्ट वस्तु को खींचने का कोई तरीका है? IE मैं आइटम सरणी से id 23 के साथ संपूर्ण आइटम ऑब्जेक्ट कैसे खींच सकता हूं।

मैं प्रयास कर चुका हूं:

db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});

हालाँकि मुझे पूरा यकीन है कि मैं 'पुल' का सही इस्तेमाल नहीं कर रहा हूँ। जो मैं समझता हूं कि पुल एक फ़ील्ड को सरणी से खींचेगा, लेकिन ऑब्जेक्ट नहीं।

किसी भी विचार को कैसे पूरे ऑब्जेक्ट को सरणी से बाहर निकालना है।

एक बोनस के रूप में मैं इसे मूंगोज़ / नोड्ज में करने की कोशिश कर रहा हूं, साथ ही साथ यह भी सुनिश्चित नहीं है कि इस प्रकार की चीज़ मूंगोज़ एपीआई में है, लेकिन मुझे नहीं मिला।


1
क्या आपने यह कोशिश की है? stackoverflow.com/questions/9048424/…
— Myrne Stol

हाँ, यह बात है। धन्यवाद!
— १५:०२ पर हारीट्रांसलेशन २ '

जवाबों:


153

प्रयत्न..

db.mycollection.update(
    {'_id': ObjectId("5150a1199fac0e6910000002")}, 
    { $pull: { "items" : { id: 23 } } },
false,
true 
);

हाँ, मेरा वाक्यविन्यास गलत था। धन्यवाद! परेशान और बहु ​​विकल्प के बिना भी कोशिश की और साथ ही साथ काम किया।
— खोया हुआ वशीकरण

12
वे बूलियन मूल्य क्या हैं?
— निकोलस डेल वैले

1
@ निकोलसडेलवे यदि मुझे सही याद है, तो ये विकल्प upsertऔर थे multi। वर्तमान सिंटैक्स और प्रलेखन के लिए इस लिंक की जाँच करें: docs.mongodb.com/manual/reference/method/db.collection.update
— Lukas Liesis

7

मेरे पास एक दस्तावेज है जैसे

यहाँ छवि विवरण दर्ज करें

मुझे एड्रेस ऐरे से एड्रेस डिलीट करना है

इंटरनेट पर बहुत खोजने के बाद मुझे इसका हल मिला

Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){
        if(err) {
          return res.status(500).json({'error' : 'error in deleting address'});
        }

        res.json(data);

      });

MongoDB CLI में यह कैसे करें?
— रागेश डी एंटनी


5
my database:->
        {
       "_id" : ObjectId("5806056dce046557874d3ab18"),
       "data" : [ 
           {
               "id" : 1
           }, 
           {
               "id" : 2
           }, 
           {
               "id" : 3
           }
       ]
    }

MY QUERY:->
db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}
OutPut:->
{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
       "data" : [ 
           {
               "id" : 1
           }, 
           {
               "id" : 2
           }
       ]
    }

3

सरणी में एकल रिकॉर्ड के लिए:

db.getCollection('documents').update(
    { },
    {'$pull':{ 'items':{'mobile': 1234567890 }}},
    {new:true}
);

सरणी में समान मोबाइल नंबर वाले कई रिकॉर्ड के लिए:

db.getCollection('documents').update(
    { },
    {'$pull':{ 'items':{'mobile': 1234567890 }}},
    {new:true,multi:true}
)

1

$pullडेटा को निकालने के लिए उपयोग करें

return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
     return {
        result: dashboardDoc
     }
});

0

किशोर दिव्यांग:

यदि आप तत्व विशेषताओं की सूची सहित सभी तत्वों को हटाना चाहते हैं। यहाँ mongoDB परेशान ऑपरेटर का उदाहरण दिया गया है:

db.UM_PREAUTH_CASE.update ({'Id': 123}, {$ unset: {dataElements: ""}})

JSON इस तरह देखें:

{"Id": 123, "dataElements": [{"createBy": "Kishore Babu Diyyana", "createByUserId": 2020}, {"createBy": "Diyyana Jishore", "createByUserId": 2021}]}}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.