我有一个非常复杂的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。$)
我怀疑这是一个简单的但是已经在这个兔子洞里停留了几个小时,任何帮助都会非常感激 谢谢 比尔
答案 0 :(得分:1)
dbsite.update(unset__sensordict__S=sensorid)
应为dbsite.update(unset__sensordict__56=1)
,因为您必须使用密钥' 56'取消设置字段。这应该工作