Ich habe eine einfache, Single-Client-Setup für MongoDB und PyMongo 2.6.3. Das Ziel besteht darin, über jedes Dokument in der Sammlung collection
zu iterieren und jedes Dokument im Prozess zu aktualisieren (save
). Der Ansatz, den ich bin mit Aussehen grob mag:Wie man Dokumente mit PyMongo iteriert und aktualisiert?
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()
Das Problem ist, dass save
offenbar ist die Reihenfolge der Dokumente in dem Cursor zu ändern. Zum Beispiel, wenn meine Sammlung von drei Dokumenten ist (id
s der Übersichtlichkeit halber weggelassen):
{
"name": "one"
}
{
"name": "two"
}
{
"name": "three"
}
die oben genannten Programmausgaben:
> updating doc one
> updating doc two
> updating doc two
jedoch Wenn die Linie collection.save(doc)
entfernt wird, wird der Ausgang wird:
> updating doc one
> updating doc two
> updating doc three
Warum passiert das? Was ist der richtige Weg, um Dokumente in einer Sammlung sicher zu iterieren und?
ist dies keine Antwort. Aber probiere '1 + 999 ist 1000' und' '1 + 999 == 1000'. – falsetru
@falsetru thx wurde gerade für die Einfachheit neu erstellt, immer noch Python lernen :). OK jetzt? – paislee
Wie ändern Sie die Dokumente? ist 'doc ['name'] = 'newValue' genug? –