Ich erhalte einen 500-Fehler auf einer getJSON
Anforderung, die Karten auf eine Python 2.7
Funktion einen MongoDB update
mit $pull
enthält.Aktualisierung mit Pull in MongoDB 3.2.5 Matching aber nicht Dokument modifiziert
Letzter Fehler mit sudo tail -f /var/log/apache2/error.log
gesehen ist:
[wsgi:error] [pid 1721:tid 140612911712000]
[client 127.0.0.1:59078]
KeyError: 'nModified', referer: http://localhost/control_room
Die Python-Logik, die mit diesem speziellen Schlüssel befasst, ist ein update
mit $pull
:
update_with_pull = collection.update({"user_email":user_email,"top_level.year":entry_year,"top_level.month":entry_month}, { "$pull": {dynamic_nested_key: {"timestamp":entry_timestamp}}})
Die bedingte danach versucht, eine zu fangen, wenn Dokument wurde geändert oder nicht mit:
if update_with_pull['nModified'] == 1:
#do stuff
testete ich die gleiche Operation in der Mongo Shell und es zurückgegeben:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
So scheint es, um die Abfrage zu werden passend, aber keine Änderungen zu tun.
Um zu beheben, der entry_timestamp
Wert, der oben im $pull
Abschnitt verwendet wird, in der Datenbank und die Funktion konsistent ist (dh sie beiden Saiten mit den gleichen Zeichen sind).
Einige Ideen:
- Ich habe gerade die Anwendung von einem
2.6.11
auf eine3.2.5
MongoDB Umgebung bewegt, die das Problem verursachen kann, aber wenn ja, ich habe zu prüfen, nicht in der Lage gewesen, wie noch. - Die Syntax für
$pull
wurde in3.2.5
geändert? - Es gibt Berechtigungsprobleme in der Sammlung, die eine Änderung verhindern?
- Ich renne
pymongo 2.6.2
invirtualenv
- vielleicht hat es einige Inkompatibilitäten mit MongoDB3.2.5
?