Mongoengine删除ReferenceField值

时间:2017-09-29 13:26:29

标签: mongodb mongoengine

我想删除mongoengine中的ReferenceField值

我的模特:

class User(db.Document):
    name = StringField(required=True)
    last_name = StringField()
    address_ref = ReferenceField(Address)



class Adress(db.Document):
    street = StringField()
    city = StringField()
    state = StringField()

不幸的是在mongengine文档中。关于未设置的信息不多。所以我正在尝试这样的事情

User.update(id=ObjectId("59ca38c5d1174d081c9bcaca")).unset(address_ref="").first()

但我有错误

TypeError: update() missing 1 required positional argument: 'self'

我的文件

{
    "_id": {
        "$oid": "59ca38c5d1174d081c9bcaca"
    },
    "name": "Amanda",
    "last_name": "Barow",
    "address_ref": {
        "$oid": "59ca38c9d1174d081c9bcad7"
    }
},
{
    "_id": {
        "$oid": "59ca38c4d1174d081c9bcac9"
    },
    "name": "Larry",
    "last_name": "Denor",
    "address_ref": {
        "$oid": "59c8f34200fc624a0168c4bc"
    }
}

我希望得到这种效果(Amanda adress_ref =“”)

{
    "_id": {
        "$oid": "59ca38c5d1174d081c9bcaca"
    },
    "name": "Amanda",
    "last_name": "Barow",
    "address_ref": ""
},
{
    "_id": {
        "$oid": "59ca38c4d1174d081c9bcac9"
    },
    "name": "Larry",
    "last_name": "Denor",
    "address_ref": {
        "$oid": "59c8f34200fc624a0168c4bc"
    }
}

1 个答案:

答案 0 :(得分:0)

您的更新会导致TypeError,因为您在类级别调用此方法 - 您应该在文档/实例上调用它。这就是为什么TypeError提到缺少第一个位置参数(self),这是要更新的实例。

所以你的更新行应该是这样的:

User.objects().first().update(address_ref="")

如果更新有效,该行将返回1