মঙ্গোডিবি, অ্যারে থেকে বস্তু সরান


90

ডক:

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

অ্যারে থেকে একটি নির্দিষ্ট বস্তু টানানোর উপায় আছে? IE আমি কীভাবে আইটেম অ্যারে থেকে আইডি 23 সহ পুরো আইটেমটিকে টানতে পারি।

আমি চেষ্টা করেছি:

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

তবে আমি নিশ্চিত যে আমি 'টান' সঠিকভাবে ব্যবহার করছি না pretty আমি যা বুঝতে পেরেছি তা থেকে কোনও অ্যারে থেকে ক্ষেত্রটি টানবে তবে কোনও বস্তু নয়।

অ্যারে থেকে পুরো বস্তুটি কীভাবে টানবে তা কোনও ধারণা।

বোনাস হিসাবে আমি এটি মঙ্গুজ / নোডেজে করার চেষ্টা করছি, পাশাপাশি এই ধরণের জিনিসটি মঙ্গুজ এপিআইতে রয়েছে কিনা তাও নিশ্চিত নয় তবে আমি এটি খুঁজে পেলাম না।


4
আপনি কি এই চেষ্টা করেছেন? stackoverflow.com/questions/9048424/...
Myrne Stol

হ্যাঁ এটা ধন্যবাদ!
06

উত্তর:


153

চেষ্টা করুন ..

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

হ্যাঁ, আমার সিনট্যাক্সটি ভুল ছিল। ধন্যবাদ! বিচলিত এবং একাধিক বিকল্পগুলি ছাড়াও চেষ্টা করে দেখুন এটিও কার্যকর হয়েছিল।
হার্টিন্ট্রান্সলেশন

12
এই বুলিয়ান মান কি?
নিকোলাস ডেল ভ্যালে

4
@ নিকোলাসডেলভ্যালি যদি আমি সঠিকভাবে মনে করি তবে এগুলি বিকল্প ছিল upsertএবং multi। বর্তমান সিনট্যাক্স এবং ডকুমেন্টেশনের জন্য এই লিঙ্কটি পরীক্ষা করুন: ডকস.মংডব.কম
লুকাশ লিসিস

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);

      });

মংগোডিবি সিএলআইতে এটি কীভাবে করবেন?
রাগেশ ডি অ্যান্টনি


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

কিশোর দিয়ানা:

আপনি যদি উপাদান উপাদানগুলির তালিকার কী সহ সমস্ত উপাদান সরিয়ে নিতে চান। এখানে মঙ্গোডিবি আনসেট অপারেটরের উদাহরণ রয়েছে:

db.UM_PREAUTH_CASE.update ({'আইডি': 123}, {$ আনসেট: {ডেটা উপাদানসমূহ: ""}})

JSON এর মতো দেখুন:

Id "আইডি": 123, "ডেটা এলিমেটস": [B "क्रয়েডবাই": "কিশোর বাবু দিউয়ানা", "ক্রয়যুক্তবাইজারআইড": 2020}, created "createdBy": "দিয়ানা কিশোর", "নির্মিতবাইসরআইডি": 2021}]}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.