Chương này giới thiệu các hoạt động theo lô (bulkWrite) trên dữ liệu tài liệu MongoDB bằng cách sử dụng mongo shell. Ở đây, các hoạt động theo lô không chỉ đề cập đến việc cập nhật theo lô của các tài liệu như đã đề cập trong các chương trước, mà còn bao gồm việc thực hiện một loạt các hoạt động ghi, bao gồm việc chèn tài liệu, cập nhật và xóa.
Hàm bulkWrite được sử dụng để thực hiện các hoạt động theo lô trong mongo shell.
Mẹo: Các hoạt động theo lô thường được sử dụng trong các kịch bản yêu cầu đồng bộ dữ liệu theo lô.
Các hoạt động ghi được hỗ trợ bởi hàm bulkWrite
Các hoạt động theo lô hỗ trợ các kết hợp sau của các hoạt động ghi:
- insertOne - Chèn một tài liệu
- updateOne - Cập nhật một tài liệu
- updateMany - Cập nhật một loạt các tài liệu
- replaceOne - Thay thế một tài liệu
- deleteOne - Xóa một tài liệu
- deleteMany - Xóa một loạt các tài liệu
Định dạng cú pháp
db.collection.bulkWrite(
[ <hoạt động 1>, <hoạt động 2>, ... ],
)
Giải thích:
- hoạt động - Đại diện cho cấu hình hoạt động ghi
- bulkWrite chấp nhận một mảng các hoạt động ghi.
Ví dụ
Dưới đây là một ví dụ toàn diện cho việc thực hiện theo lô một tập hợp các hoạt động ghi tài liệu.
db.inventory.bulkWrite(
[
// Chèn một tài liệu
{ insertOne :
{
// Nội dung tài liệu
"document" :
{
"_id" : 4, "char" : "Dithras", "class" : "barbarian", "lvl" : 4
}
}
},
{ insertOne :
{
"document" :
{
"_id" : 5, "char" : "Taeln", "class" : "fighter", "lvl" : 3
}
}
},
// Cập nhật một tài liệu, updateMany tương tự để cập nhật một loạt các tài liệu
{ updateOne :
{
// Điều kiện cập nhật
"filter" : { "char" : "Eldon" },
// Nội dung cập nhật
"update" : { $set : { "status" : "Chấn thương nghiêm trọng" } }
}
},
// Xóa một tài liệu, deleteMany tương tự để xóa nhiều tài liệu
{ deleteOne :
// Điều kiện xóa
{ "filter" : { "char" : "Brisbane" } }
},
// Thay thế một tài liệu
{ replaceOne :
{
// Điều kiện thay thế
"filter" : { "char" : "Meldane" },
// Nội dung thay thế
"replacement" : { "char" : "Tanys", "class" : "Oracle", "lvl" : 4 }
}
}
]
);