sql >> データベース >  >> NoSQL >> MongoDB

MongoDBトランザクション

    できません。
    これを行う唯一の方法は、someotherRelationaldb.Save(object);をラップすることです。 try catchで、catchでmongoCollection.Removeを実行します

    objectに既知の識別子プロパティが必要になる可能性があります そして、次のようなことを行うことができます:

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

    したがって、かなり不自然に、Saveメソッドは次のようになります。

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

    もう1つの方法は、フラグプロパティをobjectに格納することです。 後に更新されます someOtherRelationaldbへの書き込みが成功しました

    これも完全には理想的ではありませんが、クエリを変更して、IsPersistedのドキュメントのみを返すようにすることができます。 フラグはtrueです。

    これらのアプローチはどちらも、私は思いもしませんが、大きくシャーディングされた環境ではうまく機能しません。



    1. redisdbsizeコマンドの精度

    2. RuntimeError:-ERR不明なコマンドがRubyでredisgemを実行しています

    3. Node.jsMongoose.js文字列からObjectId関数へ

    4. phpMongoCursorからJSONデータを返す方法