2016-04-25 64 views
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.2virtualenv - 可能它与MongoDB有一些不兼容3.2.5

回答