sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB transaktion

Det kan du ikke.
Den eneste måde at gøre dette på ville være at pakke someotherRelationaldb.Save(object); i en try catch, og på catch, skal du mongoCollection.Remove

Du har sandsynligvis brug for en kendt identifikator på object og kunne så gøre noget som:

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

Så temmelig uryddeligt ville din Gem-metode se lidt ud som:

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

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

En anden måde er at gemme en flagegenskab på object der bliver opdateret efter den vellykkede skrivning til someOtherRelationaldb

Dette er heller ikke helt ideelt, men du kan ændre din forespørgsel til kun at returnere dokumenter, hvor IsPersisted flag er sandt.

Ingen af ​​disse metoder vil spille godt i et stærkt sønderdelt miljø, selvom jeg ikke ville tro.



  1. Returner det første element, hvis der ikke findes noget match i array

  2. Iterér over hele Mongo-databasen

  3. Fejl under installation af mongo-driver til PHP på amazon linux

  4. Søg og erstat i Mongodb?