Je suis un peu confus par l' findAndModify
méthode dans MongoDB. Quel est l'avantage de celui-ci update
méthode? Pour moi, il semble qu'elle retourne l'élément en premier et ensuite le mettre à jour.Mais Pourquoi ai-je besoin de retourner l'article premier? J'ai lu la MongoDB: le guide définitif et il dit qu'il est très pratique pour manipuler les files d'attente et d'effectuer d'autres opérations qui ont besoin d'obtenir et de définir le style de l'atomicité. Mais je ne comprends pas comment il y parvient. Quelqu'un peut-il m'expliquer cela?
Réponses
Trop de publicités?Si vous extrayez un élément et puis le mettre à jour, il peut y avoir une mise à jour par un autre thread entre ces deux étapes. Si vous mettre à jour un élément premier et ensuite aller la chercher, il peut y avoir une autre mise à jour entre les deux et vous répondrons un élément différent que ce que vous mis à jour.
Ne faire « atomique » de moyens vous avez la garantie que vous avez trouvé retour du même point exact, que vous mettez à jour - c.-à-d. aucune autre opération peut arriver entre les deux.
``retourne le document, mise à jour ne fonctionne pas.
Si j’ai bien compris Dwight Merriman (l’un des auteurs originaux de mongoDB), en utilisant update pour modifier un document unique c'est-à-dire ("multi" : false} est aussi atomique. Actuellement, il devrait être plus rapide que de faire la mise à jour équivalente à l’aide `` .
Une classe de cas d'utilisation est de compteurs et d'autres cas semblables. Par exemple, jetez un oeil à ce code (l'un des MongoDB tests): find_and_modify4.js.
Ainsi, avec findAndModify
vous incrémenter le compteur et obtenir son incrémenté
valeur en une seule étape. Comparer: si vous (A) d'effectuer cette opération en deux étapes et
quelqu'un d'autre (B) fait la même opération entre vos pas puis A et B peuvent
obtenir la même valeur de compteur au lieu de deux (juste un exemple parmi d'autres questions).