MongoDB, hapus objek dari array


90

Dokter:

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

Apakah ada cara untuk menarik objek tertentu dari array? IE bagaimana cara menarik seluruh objek item dengan id 23 dari array items.

Saya telah mencoba:

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

Namun saya cukup yakin bahwa saya tidak menggunakan 'tarik' dengan benar. Dari apa yang saya pahami, tarik akan menarik bidang dari array tetapi bukan objek.

Ada gagasan tentang cara menarik seluruh objek keluar dari larik.

Sebagai bonus, saya mencoba melakukan ini di luwak / nodejs, juga tidak yakin apakah hal ini ada di API luwak tetapi saya tidak dapat menemukannya.



iya tuh. Terima kasih!
lostintranslation

Jawaban:


153

mencoba..

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

yup, sintaks saya salah. Terima kasih! Juga mencoba tanpa opsi kesal dan multi dan itu berhasil juga.
lostintranslation

12
Apa sajakah nilai boolean itu?
Nicolas Del Valle

1
@NicolasDelValle jika saya ingat dengan benar, ini adalah opsi upsertdan multi. Untuk sintaks & dokumentasi saat ini, periksa tautan ini: docs.mongodb.com/manual/reference/method/db.collection.update
Lukas Liesis

7

Saya memiliki dokumen seperti

masukkan deskripsi gambar di sini

Saya harus menghapus alamat dari array alamat

Setelah mencari banyak di internet saya menemukan solusinya

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

        res.json(data);

      });

Bagaimana cara melakukan ini di MongoDB CLI?
Ragesh D Antony

6

Anda juga bisa mencobanya:

db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})

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

Untuk satu record dalam array:

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

Untuk beberapa catatan dengan nomor ponsel yang sama dalam larik:

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

1

Gunakan $pulluntuk menghapus data

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

0

Kishore Diyyana:

Jika Anda ingin menghapus semua elemen termasuk kunci dari daftar atribut elemen. Berikut adalah contoh operator mongoDB unset:

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

JSON Terlihat seperti ini:

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.