2017-07-24 47 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”。这应该工作