2017-07-24 92 views
1

我有一個非常複雜的Flask網站,它有很多數據庫交互,但有一個看似簡單的刪除功能! 我試圖從sensordict的(簡化的)SiteConfig文檔中下面使用MongoEngineMongoEngine從對象字段中刪除字典密鑰

刪除鍵56
{ 
"_id" : "12345", 
"sensordict" : { 
    "56" : { 
     "currentval" : 1.2, 
     "devicetype" : NumberInt(2) 
    }, 
    "70" : { 
     "currentval" : 31.0, 
     "devicetype" : NumberInt(2) 
    } 
}, 
"siteserial" : "45678", 
"status" : NumberInt(1) 
} 

代碼試圖下面其中sensorid = '56':

def delete_sensor(siteconfig, sensorid): 

    dbsite = SiteConfig.objects(id=siteconfig.id).first() 
    dbsite.update(unset__sensordict__S=sensorid) 
    dbsite.save() 

該代碼是在發生故障的更新與mongoengine.errors.OperationError:更新失敗(位置操作員沒有找到所需的匹配查詢。Unexpanded更新:sensordict。$)

我懷疑這是一個簡單的,但一直下降的兔子洞爲一個情侶在這一個和任何幫助小時將不勝感激 感謝 比爾

回答

1

dbsite.update(unset__sensordict__S=sensorid)應該dbsite.update(unset__sensordict__56=1)因爲你必須取消設置字段鍵「56」。這應該工作