Dela via


Använda transaktioner med flera dokument i Azure Cosmos DB för MongoDB

GÄLLER FÖR: MongoDB

I den här artikeln skapar du en Mongo-skalapp som kör en transaktion med flera dokument på en fast samling i Azure Cosmos DB för MongoDB med serverversion 4.0.

Vad är transaktioner med flera dokument?

I Azure Cosmos DB for MongoDB är åtgärder i ett enda dokument atomiska. Transaktioner med flera dokument gör det möjligt för program att köra atomiska åtgärder i flera dokument. Den erbjuder "allt-eller-ingenting"-semantik till åtgärderna. Vid incheckningen sparas de ändringar som görs i transaktionerna och om transaktionen misslyckas ignoreras alla ändringar i transaktionen.

Transaktioner med flera dokument följer ACID-semantik :

  • Atomicitet: Alla åtgärder som behandlas som en
  • Konsekvens: Incheckade data är giltiga
  • Isolering: Isolerad från andra åtgärder
  • Hållbarhet: Transaktionsdata sparas när klienten uppmanas att göra det

Krav

Transaktioner med flera dokument stöds i en ohardad samling i API-version 4.0. Transaktioner med flera dokument stöds inte i samlingar eller i fragmenterade samlingar i 4.0. Tidsgränsen för transaktioner är fasta 5 sekunder.

Alla drivrutiner som stöder wire protocol version 4.0 eller senare har stöd för transaktioner med Flera dokument i Azure Cosmos DB för MongoDB.

Köra transaktioner med flera dokument i MongoDB-gränssnittet

Kommentar

Det här exemplet fungerar inte i MongoSH-betaversionen (shell) inbäddad i MongoDB Compass.

  1. Öppna en kommandotolk och gå till katalogen där Mongo Shell version 4.0 och senare är installerat:

    cd <path_to_mongo_shell_>
    
  2. Skapa ett mongo shell-skript connect_friends.js och lägg till följande innehåll

    // insert data into friends collection
    db.getMongo().getDB("users").friends.insert({name:"Tom"})
    db.getMongo().getDB("users").friends.insert({name:"Mike"})
    // start transaction
    var session = db.getMongo().startSession();
    var friendsCollection = session.getDatabase("users").friends;
    session.startTransaction();
    // operations in transaction
    try {
        friendsCollection.updateOne({ name: "Tom" }, { $set: { friendOf: "Mike" } } );
        friendsCollection.updateOne({ name: "Mike" }, { $set: { friendOf: "Tom" } } );
    } catch (error) {
        // abort transaction on error
        session.abortTransaction();
        throw error;
    }
    
    // commit transaction
    session.commitTransaction();
    
  3. Kör följande kommando för att köra transaktionen med flera dokument. Värden, porten, användaren och nyckeln finns i Azure Portal.

    mongo "<HOST>:<PORT>" -u "<USER>" -p "KEY" --ssl connect_friends.js
    

Nästa steg

Utforska nyheter i Azure Cosmos DB för MongoDB 4.0