MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cập nhật trường trong mảng phần tử chính xác trong MongoDB

Bạn cần sử dụng 2 khái niệm:toán tử vị trí của mongodb và chỉ cần sử dụng chỉ mục số cho mục nhập bạn muốn cập nhật.

Toán tử vị trí cho phép bạn sử dụng một điều kiện như sau:

{"heroes.nickname": "test"}

và sau đó tham chiếu mục nhập mảng được tìm thấy như sau:

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

Khi bạn muốn cập nhật mục nhập mảng thứ 2 trong "items" và các khóa mảng được lập chỉ mục 0 - đó là khóa 1.

Vì vậy:

> 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 $ setEquals

  2. Quản lý nhiều công nghệ cơ sở dữ liệu với ClusterControl

  3. ánh xạ trong tạo chỉ mục trong tìm kiếm đàn hồi thông qua sông mongodb không có hiệu lực

  4. MongoDB - kích thước tệp lớn và ngày càng tăng

  5. MongoDB $ kích thước