MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zaktualizuj pole w dokładnej tablicy elementów w MongoDB

Musisz skorzystać z 2 pojęć:operatora pozycyjnego mongodb i po prostu użyć indeksu liczbowego dla wpisu, który chcesz zaktualizować.

Operator pozycyjny pozwala na użycie takiego warunku:

{"heroes.nickname": "test"}

a następnie odwołaj się do znalezionego wpisu tablicy w następujący sposób:

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

Ponieważ chcesz zaktualizować drugi wpis tablicy w "items", a klucze tablicy są indeksowane 0 - to jest klucz 1.

A więc:

> 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. Porównanie wzorców wdrażania dla MongoDB

  2. Jak zmienić typ pola?

  3. „upsert” w osadzonym dokumencie

  4. MongoDB $strLenCP

  5. Ciąg projektu agregacji MongoDB do ObjectId