我想從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?,我需要指定我想從中刪除值的數組的關鍵。但是,就我而言,我想從列表中刪除一個值...我應該怎麼做?
非常感謝您的時間!
再次羅斯,非常感謝你! –