2012-07-03 5 views
0

Quelle est la meilleure pratique pour exécuter ligne par ligne, pas de tri/commande/groupement.PHP: mongoDB - traitement itératif

Je vais lire chaque ligne, mettre à jour cette ligne, et continuer avec la ligne suivante, etc.

Il est impossible de mettre à jour directement sans lire avant. Existe-t-il un moyen vraiment efficace de parcourir la collection «document par document»?

Le nombre de documents est d'environ 150Mio et j'espère qu'il y a une fonctionnalité rapide pour le traitement de cette tâche.

Thx

Répondre

1

Sauf si vous faites la même mise à jour exacte sur tous les documents, vous devrez exécuter cette ligne par ligne. Bien sûr, vous pouvez utiliser plusieurs threads/processus pour mettre à jour tous les documents. Assurez-vous simplement qu'aucun document n'est mis à jour deux fois dans ce cas.

+0

En d'autres termes, il n'y a pas d'alternative plus performante à collection.find() + .update() pour chaque document - sauf pour les threads/processus. Avec une sélection sur un champ non indexé, je pourrais traiter des processus parallèles, mais je ne suis pas sûr que ce soit vraiment plus rapide qu'un seul thread. le processus sur chaque document n'est pas "cher" pour cpu, mais ce n'est pas le même travail avec chaque document ... pas aussi cool que nosql devrait être: / – ledy