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

Le déplacement de documents entre collections est-il un bon moyen de représenter les changements d'état dans MongoDB ?

Oui, c'est par conception. MongoDB ne fournit explicitement ni jointures ni transactions. Supprimer + Enregistrer est une forme de transaction.

Vous avez vraiment deux options peu complexes ici, toutes deux impliquent findAndModify .

Option 1 :une seule collecte

Sur la base de votre description, vous construisez essentiellement une file d'attente avec quelques fonctionnalités supplémentaires. Si vous exploitez une seule collection, vous utilisez findAndModify pour mettre à jour le statut de chaque élément au fur et à mesure de son traitement.

Malheureusement, cela signifie que vous perdrez ceci :... que la collection "entrante" peut être maintenue très petite et rapide de cette façon .

Option 2 :deux collections

L'autre option est essentiellement une validation en deux phases, tirant parti de findAndModify .

Jetez un œil à la documentation pour cela ici .

Une fois qu'un élément est traité dans A vous définissez un champ pour le marquer pour suppression. Vous copiez ensuite cet élément vers B . Une fois copié dans B vous pouvez ensuite supprimer l'élément de A .