首页 > 解决方案 > 在嵌入式文档列表字段中使用 Mongoengine 从嵌入式文档中删除特定值

问题描述

我在Mongoengine中有两个类,如下所示:

class User(Document):

user_id = StringField(required=True)
date_modified = DateTimeField(default=datetime.datetime.utcnow())
profile_link = URLField()
email = EmailField()
first_name = StringField()
last_name = StringField()
profile_image_metadata = EmbeddedDocumentListField(ImageMetadata)
meta = {'allow_inheritance': True,
        'index_background': True,
        'collection': 'users',
        'indexes': [{'fields': ['+user_id']}]
        }

class ImageMetadata(EmbeddedDocument):
"""
"""
img_url = URLField(unique=True)
img_content = BinaryField()
img_height = IntField(min_value=0)
img_width = IntField(min_value=0)
datetime = DateTimeField(datetime.datetime.utcnow())

所以,我有ImageMetadata类,它是EmbeddedDocumentListField中的嵌入式文档

我想要做的是进入用户的 EmbeddedDocument 列表并为每个 ImageMetadata 文档删除img_content键的值。

所以删除后,我们将拥有除image_content之外的所有元数据

我试过的是这样的:

User.objects(user_id=some_random_id).update_one(__raw__={
    '$pull': {'profile_image_metadata': {'img_content': {'$ne': None}}}})

但这从列表中删除了整个 ImageMetadata 对象,而不是 img_content 值。

标签: python-3.xmongodbmongoenginelistfieldembedded-documents

解决方案


推荐阅读