2013-05-10 5 views
0

Mes documents ont tous {max, increment, value} et je souhaite itérer sur chacun d'eux avec this.value = max (this.max + this.increment).Effectuez cette requête sur tous les documents d'une collection: this.value = Math.min (this.max, this.value + this.increment) dans mongodb

Actuellement, je trouve() tous, effectuent une valeur = Math.min (max, valeur + incrément) sur chacun, puis les sauvegardons tous sur le serveur (je le fais dans mongodb). Comme vous pouvez le voir, c'est une façon terrible. Je souhaite exécuter cette instruction sur tous les documents, uniquement sur le serveur.

Comment ferait-on cela? Un brownie à quiconque utilise des index pour optimiser davantage ceci ou explique pourquoi les index n'aideraient pas. J'utilise NodeJS pour le serveur et la bibliothèque mongodb native.

Répondre

1

Vous pouvez créer une fonction de carte comme ceci:.

db.yourcollection.mapReduce(mapFunctions...) 

http://docs.mongodb.org/manual/core/map-reduce/

« Carte-réduisent les opérations peuvent gérer des tâches d'agrégation complexes pour effectuer des opérations carte-réduire, MongoDB fournit la commande MapReduce et, dans le shell mongo, la méthode wrapper db.collection.mapReduce(). "

http://docs.mongodb.org/manual/tutorial/map-reduce-examples/

+0

merci, un brownie;) – Discipol

Questions connexes