问题描述
我正在使用mongoengine版本0.20.0
我有一个文档,该文档的属性为EmbeddedDocuments类型和ReferenceField,该文档在EmbeddedDocuments的属性上也具有唯一索引。
作为我的应用程序的一部分,我需要能够对文档执行upsert操作,
我尝试将document.save()操作与force_insert = False一起使用,但是仍然给我DuplicatKeyError / NotUniqueKeyError
我尝试使用
document.modify(query={"class_1": class_1},**document.to_mongo().to_dict(),upsert=True)
mongoengine.errors.ValidationError: A ReferenceField only accepts DBRef,LazyReference,ObjectId or documents
“收集模式”如下。
class Class_1(EmbeddedDocument):
attr_1 = StringField()
attr_2 = StringField()
class Class_2(Document):
Meta = {"collection": "class_2"}
attr_1 = StringField()
attr_2 = IntField()
class class_3(Document):
Meta = {
"collection": "class_3","indexes": [
{
"fields": ["class_1.attr_1","class_1.attr_2"],"unique": True,"name": "unique_index",}
]
}
class_1 = EmbeddedDocumentField(Class_1)
class_2 = ReferenceField("Class_2")
想知道是否有一种更简单的方法来对mongoengine文档进行upsert操作。
理想情况下,我正在寻找一种方式来更新整个文档,而不必指定需要更新的每个单独字段,作为我的应用程序的一部分,我将始终仅具有完整的文档更新。 / strong>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)