Comment faire évoluer et mettre à jour les documents avec PyMongo?

J'ai un simple client de l'installation de MongoDB et PyMongo 2.6.3. L'objectif est d'itérer sur chaque document de la collection collection et de mise à jour (save) chaque document dans le processus. L'approche, je suis en utilisant ressemble à peu près comme:

cursor = collection.find({})
index = 0
count = cursor.count()
while index != count:
    doc = cursor[index]
    print 'updating doc ' + doc['name']
    # modify doc ..
    collection.save(doc)
    index += 1
cursor.close()

Le problème est que save est apparemment la modification de l'ordre des documents dans le curseur. Par exemple, si ma collection est composé de 3 documents (ids omis pour plus de clarté):

{
    "name": "one"
}
{
    "name": "two"
}
{
    "name": "three"
}

le programme ci-sorties:

> updating doc one
> updating doc two
> updating doc two

Si, cependant, la ligne de collection.save(doc) est supprimé, la sortie devient:

> updating doc one
> updating doc two
> updating doc three

Pourquoi est-ce arrivé? Quelle est la bonne façon sécuritaire itérer et mise à jour des documents dans une collection?

  • Ce n'est pas une réponse. Mais essayez 1 + 999 is 1000 et `1 + 999 == 1000`.
  • thx était juste recréer pour des raisons de simplicité, toujours en apprentissage de python :). ok maintenant?
  • comment êtes-vous modifier les docs? est doc['name'] = 'newValue' assez?
InformationsquelleAutor paislee | 2013-12-15