class Parent(Document):
list_items = ListField(EmbeddedDocumentField(Child))
class Child(EmbeddedDocument):
name = StringField()
我创建了一个使用
从ListField中删除嵌入文档的函数拉 - 原子算子
请查看以下内容:
def deleteItem(parent_id,name):
Parent.get(id=parent_id).update_one(pull__list_items__name=name)
我的问题是我如何确保成功执行此原子更新?
我如何知道列表项是否实际存在于父对象中?
答案 0 :(得分:0)
我找到的临时解决方案是循环遍历列表项的数组,直到找到满足条件的项并从列表中删除它:
def deleteItem(parent_id, name):
parent = Parent.objects.get(id=parent_id)
for item in list(parent.list_items):
if item.name == name:
parent.list_items.remove(item)
parent.save()
return true
return false
但如果有更好的解决方案,我宁愿单独使用数据库