sql >> Database >  >> NoSQL >> MongoDB

MongoDB-transactie

Dat kan niet.
De enige manier om dit te doen is door someotherRelationaldb.Save(object); in te pakken. in een try-catch, en bij de vangst, doe mongoCollection.Remove

U heeft waarschijnlijk een bekende identifier-eigenschap nodig voor object en zou dan iets kunnen doen als:

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

Dus, nogal slordig, zou je Opslaan-methode er een beetje als volgt uitzien:

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

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

Een andere manier is om een ​​eigenschap flag op te slaan op het object die wordt na . geüpdatet de succesvolle schrijfactie naar someOtherRelationaldb

Dit is ook niet echt ideaal, maar je zou je zoekopdracht kunnen aanpassen om alleen documenten terug te sturen waar IsPersisted vlag is waar.

Geen van beide benaderingen zal goed werken in een omgeving met veel shards, hoewel ik niet zou denken.



  1. Locatiegegevens opslaan in Mongodb-document

  2. De strijd om de NoSQL-databases - MongoDB en Firebase vergelijken

  3. MongoDB SSL met zelfondertekende certificaten in C#

  4. Facebook user_id als MongoDB BSON ObjectId?