MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Transactions Mongoose.js

Si vous devez vraiment avoir des transactions sur plusieurs types de documents (dans des collections distinctes), le moyen d'y parvenir est d'utiliser une seule table qui stocke les actions à entreprendre.

db.actions.insert(
{ actions: [{collection: 'players', _id: 'p1', update: {$set : {name : 'bob'} } },
            {collection: 'stories', _id: 's1', update: {$set : {location: 'library'} } }], completed: false }, callback);

Cet insert est atomique, et tout est fait en même temps. Vous pouvez ensuite exécuter les commandes dans la collection 'actions' et les marquer comme terminées ou les supprimer au fur et à mesure que vous les terminez, en appelant votre rappel d'origine lorsqu'elles sont toutes terminées. Cela ne fonctionne que si votre boucle de traitement des actions est la seule chose à mettre à jour la base de données. Bien sûr, vous devrez arrêter d'utiliser la mangouste, mais plus tôt vous le ferez, mieux vous serez de toute façon.