Kommentar
Å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
Important
Vill du migrera ett befintligt MongoDB-program eller använda MQL-funktioner (MongoDB Query Language) ? Överväg Azure DocumentDB.
Letar du efter en databaslösning för storskaliga scenarier med ett serviceavtal på 99,999% tillgänglighetsnivå (SLA), snabb autoskalning och automatisk redundans i flera regioner? Överväg Azure Cosmos DB för NoSQL.
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 en commit sparas de ändringar som görs i transaktionerna och om transaktionen misslyckas raderas alla ändringar i transaktionen.
Transaktioner med flera dokument följer ACID-semantik :
- Atomicitet: Alla åtgärder som behandlas som en
- Konsekvens: Bekräftad data är giltig
- Isolering: Isolerad från andra åtgärder
- Hållbarhet: Transaktionsdata sparas när klienten uppmanas att göra det
Requirements
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
Anmärkning
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-portalen.
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