Phiên bản 2 của trình điều khiển MongoDB C # yêu cầu thiết lập IsUpsert
cờ trong các lệnh ghi. Ví dụ này sẽ nâng cấp toàn bộ tài liệu.
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
var result = await collection.ReplaceOneAsync(
filter: new BsonDocument("_id", 123),
options: new ReplaceOptions { IsUpsert = true },
replacement: newDoc);
Phiên bản 1 của trình điều khiển MongoDB C # thực hiện logic này trong Save
yêu cầu.
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
collection.Save(newDoc);
Phương pháp Lưu là sự kết hợp của Chèn và Cập nhật. Nếu thành viên Id của tài liệu có một giá trị, thì nó được giả định là một tài liệu hiện có và Lưu gọi Cập nhật trên tài liệu (đặt cờ Upsert chỉ trong trường hợp nó thực sự là một tài liệu mới). Nếu không, nó được giả định là một tài liệu mới và Lưu lệnh gọi Chèn sau lần đầu tiên gán một giá trị duy nhất mới được tạo cho thành viên Id.
Tham khảo:http://mongodb.github.io/mongo-csharp-driver/1.11/driver/#save-tdocument-method
Lưu ý:Tuy nhiên, điều này yêu cầu ánh xạ thích hợp của trường Id. Thông tin thêm về điều đó tại đây:http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identizing-the-id-field-or-property