Câu trả lời ngắn gọn là có cho tính nguyên tử.
Trong MongoDB, Giao dịch (còn được gọi là giao dịch nhiều tài liệu) được liên kết với một phiên . Tức là bạn bắt đầu giao dịch cho một phiên. Tại bất kỳ thời điểm nào, bạn có thể có nhiều nhất một mở giao dịch trong một phiên.
Bạn không thể khóa toàn bộ bộ sưu tập để ghi. Bạn có thể muốn tạo nhiều giao dịch để đảm bảo rằng việc ghi không xen kẽ / ghi đè giữa các quy trình của bạn. MongoDB sử dụng Khóa lạc quan thay vì Khóa bi quan .
Tương tự như vậy trong các giao dịch đa tài liệu MongoDB. Ví dụ:sử dụng mongo shell :
s1 = Mongo().startSession()
sessionTest = s1.getDatabase("databaseName").test;
s1.startTransaction()
sessionTest.find({a:"foo"})
> {_id: ObjectId(..), a:"foo", b:1}
// Let's update the record outside of the session (i.e. another process)
db.test.update({a:"foo"}, {$set:{b:2}})
sessionTest.update({a:"foo"}, {$set:{b:9}})
// You'll get a WriteConflict error because the the document has been modified outside of the session.
Cũng lưu ý rằng trong khi giao dịch đang mở, không có thay đổi dữ liệu nào được thực hiện bởi các hoạt động trong giao dịch được hiển thị bên ngoài giao dịch.
- Khi một giao dịch được cam kết, tất cả các thay đổi dữ liệu sẽ được lưu và hiển thị bên ngoài giao dịch và giao dịch kết thúc.
- Khi một giao dịch bị hủy bỏ, tất cả các thay đổi dữ liệu được thực hiện bởi các lần ghi trong giao dịch sẽ bị hủy bỏ mà không bao giờ hiển thị và giao dịch kết thúc.
Xem thêm Ví dụ về Atomicity .
Cần lưu ý rằng MongoDB là một cơ sở dữ liệu phân tán , vì vậy bạn cũng cần lưu ý về các tùy chọn khác nhau để có tính nhất quán. Bạn có thể chỉ định các tùy chọn này khi bắt đầu Session.startTransaction () tùy thuộc vào trường hợp sử dụng:
-
Đọc Cô lập (Đọc Mối quan tâm) :Giao dịch đa tài liệu MongoDB hỗ trợ đọc mối quan tâm " ảnh chụp nhanh "," cục bộ "và" đa số ".
Giao dịch nhiều tài liệu hỗ trợ tùy chọn đọc chính và tất cả các hoạt động trong một giao dịch nhất định phải chuyển đến cùng một thành viên.
Bạn cũng có thể quan tâm đến Kỹ thuật Chalk and Talks:Giao dịch MongoDB video chứa một số giải thích kỹ thuật đằng sau các giao dịch MongoDB.