2016-04-25 62 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

回答