Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’APPLIQUE À : MongoDB
Dans cet article, vous allez créer une application shell Mongo qui exécute une transaction multidocument sur une collection fixe dans Azure Cosmos DB for MongoDB avec la version serveur 4.0.
Que sont les transactions multidocuments ?
Dans Azure Cosmos DB for MongoDB, les opérations exécutées sur un seul document sont de type atomique. Les transactions multidocuments permettent aux applications d’exécuter des opérations atomiques sur plusieurs documents. Elles fournissent une sémantique « tout ou rien » aux opérations. À la validation, les modifications effectuées dans les transactions sont conservées et, si une transaction échoue, toutes les modifications au sein de la transaction sont ignorées.
Les transactions multidocuments suivent la sémantique ACID :
- Atomicité : toutes les opérations sont traitées comme un tout
- Cohérence : les données validées sont correctes
- Isolation : données isolées des autres opérations
- Durabilité : les données de transaction sont conservées quand le client est enjoint à le faire
Spécifications
Les transactions multidocuments sont prises en charge dans une collection non partitionnée dans l’API version 4.0. Les transactions multidocuments ne sont pas prises en charge sur plusieurs collections ou au sein de collections partitionnées dans la version 4.0. Le délai d’expiration des transactions est fixé à cinq secondes.
Tous les pilotes qui prennent en charge le protocole filaire version 4.0 ou ultérieure prennent en charge les transactions multidocuments dans Azure Cosmos DB for MongoDB.
Exécuter des transactions multidocuments dans le shell MongoDB
Notes
Cet exemple ne fonctionne pas dans la version bêta de MongoSH (interpréteur de commandes) incorporée dans MongoDB Compass.
Ouvrez une invite de commandes, et accédez au répertoire où le shell Mongo version 4.0 ou ultérieure est installé :
cd <path_to_mongo_shell_>
Créez un script de shell Mongo connect_friends.js et ajoutez-y le contenu suivant
// 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();
Exécutez la commande suivante pour exécuter la transaction multidocument. L’hôte, le port, l’utilisateur et la clé sont indiqués dans le portail Azure.
mongo "<HOST>:<PORT>" -u "<USER>" -p "KEY" --ssl connect_friends.js
Étapes suivantes
Explorez les nouveautés d’Azure Cosmos DB for MongoDB 4.0