gpt4 book ai didi

python - 如何从 Mongoengine/Pymongo 中的字典中自动删除键?

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:35 25 4
gpt4 key购买 nike

所以这主要是一个 Mongoengine 问题,但看看错误,问题似乎出在底层 pymongo 层,所以我想我应该提到这两个问题。基本上我有一个这样的模型编辑:更新以显示更多类定义

class MyModel(Document):
dictField = DictField()

class PermHolder(Document):
meta = {'allow_inheritance': True}
....

class ValClass(PermHolder):
....

在我的代码中,我尝试使用原子更新来操作该字典(在尝试正常方法和保存之前,我遇到了奇怪的竞争条件问题)。另外,因为键是一个变量,所以我必须使用 kwargs 作为更新函数的参数

modelObject = MyModel.objects.get(id=blah)
valVar = ValClass.objects.get(id=blah)

# This works at adding the binding modelObject[keyVar] = valVar
modelObject.update(**{'set__dictField__' + keyVar: valVar })
...
# Trying to remove the binding later on
modelObject.update(**{'unset__dictField__' + keyVar: valVar })

因此,当我尝试删除时,第二次调用会出现错误

 Cannot encode object: <ValClass: 51e94b55bc616310e5e4f3fb>

这很奇怪,因为 set 命令有效。有没有另一种方法可以删除这个并且我使用了不正确的语法?

最佳答案

如果 valVar 是类的实例并且由 objectId 存储 - 尝试:

modelObject.update(**{'unset__dictField__' + keyVar: valVar.id })

关于python - 如何从 Mongoengine/Pymongo 中的字典中自动删除键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com