Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Öppna en kommandotolk och gå till katalogen där Mongo Shell version 4.0 och senare är installerat:
cd <path_to_mongo_shell_>
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();
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