检查Atomic Update是否成功

时间:2018-03-20 21:13:36

标签: python mongodb pymongo mongoengine

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)

我的问题是我如何确保成功执行此原子更新?

我如何知道列表项是否实际存在于父对象中?

1 个答案:

答案 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

但如果有更好的解决方案,我宁愿单独使用数据库