recherche

Maison  >  Questions et réponses  >  le corps du texte

Je voudrais demander s'il existe une fonction dans MongoDB pour rechercher des documents par lots puis mettre à jour les valeurs des champs spécifiés dans les documents ?

Il est désormais nécessaire d'utiliser MongoDB pour rechercher des documents et mettre à jour les champs du document en même temps, c'est-à-dire utiliser une seule commande pour terminer la recherche et la mise à jour (atomicité).
Mongo a des méthodes similaires pour un seul document, telles que l'opération de recherche et de mise à jour FindAndModify, qui est atomique, mais n'affecte qu'un seul document.
Je voudrais demander s'il existe une opération permettant de trouver plusieurs documents et de mettre à jour les champs des documents en conséquence.

为情所困为情所困2788 Il y a quelques jours667

répondre à tous(2)je répondrai

  • phpcn_u1582

    phpcn_u15822017-05-02 09:27:48

    La mise à jour Mongoose peut être effectuée par lots. L'attribut multi de la mise à jour est défini sur true, http://www.nonb.cn/blog/nodej...

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-02 09:27:48

    1. Atomicité dans MongoDB :

    1. C'est atomique pour un seul document. FindAnyModify n'exploite qu'un seul document, donc c'est atomique ;

    2. Pour les opérations sur plusieurs documents, chaque opération sur un seul document est atomique, mais l'opération entière n'est pas atomique. Pendant l'opération, il peut y avoir des opérations sur d'autres documents.

    Mais dans la plupart des scénarios, l'atomicité d'un seul document répond déjà aux exigences

    ;

    Si vous avez besoin d'atteindre l'atomicité pour le fonctionnement de plusieurs documents, vous devez l'implémenter avec votre propre code/conception.

    2. Pour vos besoins exprimés, vous pouvez effectivement utiliser l'option multi de update, ou utiliser directement updateMany.

    db.collection.updateMany()
    
    db.collection.update(,{multi : true})
    

    Pour référence.

    J'adore MongoDB ! Amusez-vous !

    répondre
    0
  • Annulerrépondre