Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cập nhật nhanh bản ghi tag trong MongoDB

Sử dụng toán tử vị trí $ kết hợp update() để cập nhật chính xác phần tử trong mảng tag. Tạo collection:

> db.demo713.insertOne({
...   tags: [
...     { id:101, Name:"Tag-1" },
...     { id:102, Name:"Tag-3" },
...     { id:103, Name:"Tag-3" }
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea8625a5d33e20ed1097b87") }

Hiển thị dữ liệu:

> db.demo713.find();
{ "_id" : ObjectId("5ea8625a5d33e20ed1097b87"), "tags" : [ { "id" : 101, "Name" : "Tag-1" }, { "id" : 102, "Name" : "Tag-3" }, { "id" : 103, "Name" : "Tag-3" } ] }

Cập nhật tag có id=102 từ "Tag-3" thành "Tag-2":

> db.demo713.update(
...   {"tags.id":102},
...   {$set:{"tags.$.Name":"Tag-2"}},
...   false, true
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Kết quả (chỉ tag id=102 bị thay đổi):

> db.demo713.find().pretty();
{ "_id" : ObjectId("5ea8625a5d33e20ed1097b87"), "tags" : [ { "id" : 101, "Name" : "Tag-1" }, { "id" : 102, "Name" : "Tag-2" }, { "id" : 103, "Name" : "Tag-3" } ] }

Tham số update: update(query, update, upsert, multi). Ở đây: upsert=false, multi=true (cập nhật tất cả khớp). Toán tử $ chỉ cập nhật phần tử đầu tiên khớp trong mảng.