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
?