【问题标题】:Mongoengine remove ReferenceField valueMongoengine 删除 ReferenceField 值
【发布时间】:2017-09-29 13:26:28
【问题描述】:

我想删除 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"
    }
}

【问题讨论】:

    标签: mongodb mongoengine


    【解决方案1】:

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

    所以你的更新行应该像这样工作:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-29
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多