我在映射到包含 MongoDB 的函数的getJSON
请求时收到 500 错误。 Python 2.7
update
$pull
看到的最后一个错误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
with $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
我在 mongo shell 中测试了相同的操作,它返回:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
所以它似乎与查询匹配,但没有做任何修改。
为了进一步排除故障,上一节entry_timestamp
中使用的值$pull
在数据库和函数中是一致的(即它们都是具有相同字符的字符串)。
一些想法:
- 我刚刚将应用程序从 a 移动
2.6.11
到3.2.5
MongoDB 环境,这可能会导致问题,但是,如果是这样,我还不能确定是怎么回事。 - 的语法
$pull
在3.2.5
? - 集合上存在阻止修改的权限问题?
- 我正在运行
pymongo 2.6.2
-virtualenv
也许它与 MongoDB 有一些不兼容3.2.5
?