J'ai une collection nommée foo
hypothétiquement.
Chaque instance de foo
possède un champ appelé lastLookedAt qui est un horodatage UNIX depuis l'époque. Je voudrais pouvoir passer par le client MongoDB et définir cet horodatage pour tous les documents existants (environ 20 000 d'entre eux) sur l'horodatage actuel.
Quelle est la meilleure façon de gérer cela?
Réponses:
Quelle que soit la version, pour votre exemple, le
<update>
est:Cependant, selon votre version de MongoDB, la requête sera différente. Quelle que soit la version, la clé est que la condition vide
{}
correspondra à n'importe quel document . Dans le shell Mongo, ou avec n'importe quel client MongoDB:$ version> = 3.2 :
{}
est la condition (la condition vide correspond à n'importe quel document)3.2> $ version> = 2.2 :
{}
est la condition (la condition vide correspond à n'importe quel document){multi: true}
est l'option "mettre à jour plusieurs documents"$ version <2.2 :
{}
est la condition (la condition vide correspond à n'importe quel document)false
est pour le paramètre " upsert "true
est pour le paramètre "multi" (mettre à jour plusieurs enregistrements)la source
Ce code vous sera utile
la source
J'utilise le pilote MongoDB .NET depuis un peu plus d'un mois maintenant. Si je devais le faire en utilisant le pilote .NET, j'utiliserais la méthode Update sur l'objet de collection. Tout d'abord, je vais construire une requête qui me donnera tous les documents qui m'intéressent et faire une mise à jour sur les champs que je souhaite modifier. La mise à jour dans Mongo n'affecte que le premier document et pour mettre à jour tous les documents résultant de la requête, il faut utiliser l'indicateur de mise à jour «Multi». Un exemple de code suit ...
la source