加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – OperationError:无法保存文档(LEFT_SUBFIELD只支持

发布时间:2020-12-16 21:49:00 所属栏目:Python 来源:网络整理
导读:我在MongoDB中有一个Organization数据库.我正在尝试使用mongoengine保存该数据库中的数据.我正在使用Djnago服务器.当我创建对象然后它的工作正常但在编辑后给出了一些错误. class Organization(Document): username= StringField() ancestors = ListField(Re

我在MongoDB中有一个Organization数据库.我正在尝试使用mongoengine保存该数据库中的数据.我正在使用Djnago服务器.当我创建对象然后它的工作正常但在编辑后给出了一些错误.

class Organization(Document):
    username= StringField()
    ancestors = ListField(ReferenceField('Organization',dbref=False),default = list)
    parents = ListField(ReferenceField('Organization',default = list)
    descendants = ListField(ReferenceField('Organization',default = list)


obj1 = Organization(username = 'kousik')
obj1.save()
最佳答案
这是mongoengine bug.我为此创建了问题:https://github.com/MongoEngine/mongoengine/issues/422.

解决方案现在:

>在更新之前使用完整的重新加载文档(只是重新加载不起作用,因为请参考):

obj1 = Organization.objects(username=obj1.username).first()
obj1.descendants = [obj2,obj3]
obj1.save()


obj2 = Organization.objects(username=obj2.username).first()
obj2.descendants = [obj3]
obj2.save()

>使用原子更新而不是保存.
>使用to_dbref作为参考:

obj1 = Organization(username='kousik')
print obj1.save()
# 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读