我在 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())
所以,我在 EmbeddedDocumentListField 中有 ImageMetadata 类,它是嵌入文档。
我想要做的是进入用户的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值。