MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB транзакция

Не можете.
Единственият начин да направите това е да обвиете someotherRelationaldb.Save(object); в try catch и на catch направете mongoCollection.Remove

Вероятно ще ви е необходимо свойство на известен идентификатор на object и след това може да направи нещо като:

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

Така че, доста неподредено, вашият метод за запазване би изглеждал малко така:

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

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

Друг начин е да съхраните свойство на флаг върху object които се актуализират след успешният запис в someOtherRelationaldb

Това също не е идеално, но можете да промените заявката си така, че да връща само документи, където IsPersisted флагът е верен.

Нито един от тези подходи няма да работи добре в среда със силно разделение, въпреки че не бих си помислил.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoEngine:EmbeddedDocument v/s. ReferenceField

  2. MongoDB различен()

  3. Spring Data MongoDB - игнорирайте празните обекти

  4. сортиране по дължина на низа в Mongodb/pymongo

  5. Разлика между MongoDB и Mongoose