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

Giao dịch MongoDB

Bạn không thể.
Cách duy nhất để làm điều này là bọc someotherRelationaldb.Save(object); trong một lần bắt thử và khi bắt, hãy thực hiện mongoCollection.Remove

Bạn có thể cần một thuộc tính số nhận dạng đã biết trên object và sau đó có thể làm điều gì đó như:

mongoCollection.Remove(Query.EQ("_id", object.Id));

Vì vậy, khá rắc rối, phương thức Lưu của bạn sẽ trông giống như sau:

private void Save(object)
{
   mongoCollection.Save(object);

   try
   {
      someotherRelationaldb.Save(object);
   }
   catch
   {
      mongoCollection.Remove(Query.EQ("_id", object.Id));
   }
}

Một cách khác là lưu trữ thuộc tính cờ trên đối tượng object được cập nhật sau ghi thành công vào someOtherRelationaldb

Điều này cũng không hoàn toàn lý tưởng, nhưng bạn có thể sửa đổi truy vấn của mình để chỉ trả về các tài liệu trong đó IsPersisted cờ là đúng.

Cả hai cách tiếp cận này sẽ không hoạt động tốt trong một môi trường bị chia cắt nhiều mặc dù tôi không nghĩ.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tôi có nên trả về từng mảng hoặc dữ liệu trong Mongoose không

  2. MongoDB:Cách tìm tài liệu theo id bên trong tài liệu lồng nhau

  3. Tại sao tôi nhận được đối số không được công nhận cho đến dateFromString:'format' mặc dù có phiên bản db> 3.6 hỗ trợ tổng hợp

  4. Trình điều khiển MongoDB C # tương đương với truy vấn sau bằng cách sử dụng toán tử cập nhật mảng $ [<identifier>]

  5. 5 cách để kiểm tra kích thước của một bộ sưu tập trong MongoDB