MongoEngine从对象字段中删除dict键

时间:2017-07-24 19:07:41

标签: mongodb python-3.x flask-mongoengine

我有一个非常复杂的Flask网站,有大量的数据库交互,但却被一个看似简单的删除功能所困扰! 我试图使用MongoEngine在(简化的)SiteConfig文档中删除sensordict中的键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更新时代码失败:更新失败(位置操作员未找到查询所需的匹配.Unex扩展更新:sensordict。$)

我怀疑这是一个简单的但是已经在这个兔子洞里停留了几个小时,任何帮助都会非常感激 谢谢 比尔

1 个答案:

答案 0 :(得分:1)

dbsite.update(unset__sensordict__S=sensorid)应为dbsite.update(unset__sensordict__56=1),因为您必须使用密钥' 56'取消设置字段。这应该工作