2017-07-24 3 views
1

Ich habe eine ziemlich komplexe Flask-Website mit vielen DB-Interaktionen, die aber mit einer scheinbar einfachen Löschfunktion stecken geblieben sind! Ich versuche, unter Verwendung von MongoEngineMongoEngine dict key aus Objektfeld löschen

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

-Code Schlüssel 56 von sensordict in der (vereinfacht) siteconfig Dokument zu löschen versucht, unter dem '56' SensorID =:

def delete_sensor(siteconfig, sensorid): 

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

Der Code an die versagt update with mongoengine.errors.OperationError: Aktualisierung fehlgeschlagen (Der positionelle Operator hat die von der Abfrage benötigte Übereinstimmung nicht gefunden. Unerweiterte Aktualisierung: sensordict. $)

Ich vermute, dass dies ein einfacher ist, aber weit weg vom Kaninchenloch Für ein paar Stunden auf dieser und jede Hilfe viel Dank Bill

Antwort

1

dbsite.update(unset__sensordict__S=sensorid) sollte dbsite.update(unset__sensordict__56=1) geschätzt werden würde, da Sie das Feld mit Schlüssel unscharf zu schalten haben ‚56‘. Dies sollte funktionieren

Verwandte Themen