0
我在getJSON
請求中發現500錯誤,該請求映射到Python 2.7
函數,該函數包含MongoDB update
和$pull
。在MongoDB 3.2.5中匹配但沒有修改文件的更新
與sudo tail -f /var/log/apache2/error.log
看到最後一個錯誤是:
[wsgi:error] [pid 1721:tid 140612911712000]
[client 127.0.0.1:59078]
KeyError: 'nModified', referer: http://localhost/control_room
與這個特定的關鍵交易
Python的邏輯是update
與$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}}})
在此之後,有條件的在追趕如果文件已被修改或不與:
if update_with_pull['nModified'] == 1:
#do stuff
我在蒙戈外殼測試相同的操作,它返回:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
所以它似乎是相匹配的查詢,但沒有做任何修改。
爲了進一步排除故障,上述$pull
部分中使用的entry_timestamp
值在數據庫和函數(即它們都是具有相同字符的字符串)中是一致的。
一些想法:
- 我剛剛搬到從
2.6.11
應用到3.2.5
MongoDB的環境中,這可能會引起問題,但是,如果是這樣,我一直無法確定如何然而。 $pull
的語法已更改3.2.5
?- 在收集上有許多問題妨礙修改?
- 我正在運行
pymongo 2.6.2
在virtualenv
- 可能它與MongoDB有一些不兼容3.2.5
?