sql >> Databáze >  >> NoSQL >> MongoDB

Transakce MongoDB

Nemůžete.
Jediný způsob, jak to udělat, by bylo zabalit someotherRelationaldb.Save(object); v pokusu catch a na catch proveďte mongoCollection.Remove

Pravděpodobně budete potřebovat známou vlastnost identifikátoru object a pak by mohl udělat něco jako:

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

Takže poněkud neuspořádaně by vaše metoda Save vypadala trochu jako:

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

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

Dalším způsobem je uložit vlastnost flag na object které se aktualizují po úspěšný zápis do someOtherRelationaldb

Ani to není úplně ideální, ale můžete svůj dotaz upravit tak, aby vracel pouze dokumenty, kde IsPersisted příznak je pravdivý.

Ani jeden z těchto přístupů nebude hrát dobře v silně narušeném prostředí, i když bych si nemyslel.



  1. Úvod do HDFS Federation &Architecture

  2. Řešení typů vnořených dokumentů pomocí Spring Data a MongoDB

  3. Node Mongo Native – jak poznat, že je kurzor vyčerpán?

  4. mongodb:jak mohu vidět dobu provedení souhrnného příkazu?