MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Perbarui bidang dalam array elemen yang tepat di MongoDB

Anda perlu menggunakan 2 konsep:operator posisi mongodb dan cukup menggunakan indeks numerik untuk entri yang ingin Anda perbarui.

Operator posisi memungkinkan Anda untuk menggunakan kondisi seperti ini:

{"heroes.nickname": "test"}

dan kemudian rujuk entri array yang ditemukan seperti ini:

{"heroes.$  // <- the dollar represents the first matching array key index

Karena Anda ingin memperbarui entri larik ke-2 di "item", dan kunci larik diindeks 0 - itulah kuncinya 1.

Jadi:

> db.denis.insert({_id:"43434", heroes : [{ nickname : "test",  items : ["", "", ""] }, { nickname : "test2", items : ["", "", ""] }]});
> db.denis.update(
    {"heroes.nickname": "test"}, 
    {$set: {
        "heroes.$.items.1": "new_value"
    }}
)
> db.denis.find()
{
    "_id" : "43434", 
    "heroes" : [
        {"nickname" : "test", "items" : ["", "new_value", "" ]},
        {"nickname" : "test2", "items" : ["", "", "" ]}
    ]
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $min

  2. MongoDB - apakah DBREF diperlukan?

  3. Bagaimana cara menghindari peringatan transparent_hugepage/defrag dari mongodb?

  4. error:parameter tipe `D` harus digunakan sebagai parameter tipe untuk beberapa tipe lokal

  5. Bagaimana saya bisa menelusuri atau menanyakan data MongoDB langsung?