MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Transakcja MongoDB

Nie możesz.
Jedynym sposobem, aby to zrobić, byłoby zawinięcie someotherRelationaldb.Save(object); w try catch, a na catch wykonaj mongoCollection.Remove

Prawdopodobnie będziesz potrzebować znanej właściwości identyfikatora na object i mógłby wtedy zrobić coś takiego:

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

Tak więc, raczej nieporządnie, twoja metoda Save wyglądałaby trochę tak:

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

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

Innym sposobem jest przechowywanie właściwości flag w object które zostanie zaktualizowane po udany zapis do someOtherRelationaldb

To też nie jest idealne, ale możesz zmodyfikować zapytanie, aby zwracało tylko dokumenty, w których IsPersisted flaga jest prawdziwa.

Żadne z tych podejść nie zagra dobrze w mocno shardowanym środowisku, chociaż nie sądzę.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Błąd MongoDB na mongos:zbyt wiele opcji pozycyjnych

  2. odczytywanie danych z określonych węzłów w zestawie replik mongo

  3. SyntaxError:nieprawidłowy identyfikator właściwości — MongoDB

  4. Czynniki operacyjne do rozważenia podczas modelowania danych MongoDB

  5. Jak uzyskać numer wersji MongoDB w Heroku?