我想从ListField(ReferenceField)
中删除一些参考,仅基于它们的值。MongoEngine - 从ListField中提取参考,编号
我存储有关的下列型号的图像信息:
class ImageUrl(Document):
src = UrlField()
counter = IntField()
deleted = BooleanField()
我们存储id
个页面上遇到的图像在EmbeddedDocument
称为Webpage
:
class Webpage(EmbeddedDocument):
image_list = ListField(ReferenceField(ImageUrl))
...
最后,Website
型号被嵌入到RawData
型号中:
class RawData(Document):
...
webpage = EmbeddedDocumentField(Webpage)
我想从RawData
记录中删除对它们的某些属性(例如:计数器值超过1)的引用,然后将这些ImageUrl
记录的deleted
属性设置为True
。
我做:
images = ImageUrl.objects((Q(deleted=False) & Q(counter__gt=1)).all()
for image in images:
# all RadData records containing the image in their image list
for rdata in RawData.objects(webpage__image_list__in=[image.id]:
# remove image from the image_list
RawData.objects(id=rdata.id).update_one(pull__webpage__image_list=image.id)
# set 'deleted=True' on the ImageUrl record
ImageUrl.objects(id=image.id).update_one(set__deleted=True)
的pull
操作引发以下错误: OperationError: Update failed [Cannot apply $pull/$pullAll modifier to non-array]
。
据我所知,从http://docs.mongodb.org/manual/reference/operator/pull/#_S_pull或How to remove a item from a list(ListField) by id in MongoEngine?,我需要指定我想从中删除值的数组的关键。但是,就我而言,我想从列表中删除一个值...我应该怎么做?
非常感谢您的时间!
再次罗斯,非常感谢你! –