我在getJSON
请求中收到500错误,该错误映射到包含带Python 2.7
的MongoDB update
的{{1}}函数。
$pull
看到的上一个错误是:
sudo tail -f /var/log/apache2/error.log
处理此特定密钥的Python逻辑是带有[wsgi:error] [pid 1721:tid 140612911712000]
[client 127.0.0.1:59078]
KeyError: 'nModified', referer: http://localhost/control_room
的{{1}}:
update
此后的条件是尝试捕获文档是否已被修改:
$pull
我在mongo shell中测试了相同的操作并返回:
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 })
值在数据库和函数中是一致的(即它们都是具有相同字符的字符串)。
一些想法:
entry_timestamp
移动到$pull
MongoDB环境,这可能会导致问题,但是,如果是这样,我还没有能够确定如何。 2.6.11
3.2.5
的语法已更改
$pull
中运行3.2.5
- 也许它与MongoDB pymongo 2.6.2
有些不兼容?答案 0 :(得分:0)
<强>解决方案强>
升级到virtualenv
会导致错误:
3.2.5
https://stackoverflow.com/a/31194981/1063287
但是,我升级到pymongo 3.2.2
,重新启动了apache,问题似乎得到了解决。