【问题标题】:Check if Atomic Update was successful检查原子更新是否成功
【发布时间】:2018-08-29 20:33:53
【问题描述】:
class Parent(Document):
   list_items = ListField(EmbeddedDocumentField(Child))

class Child(EmbeddedDocument):
   name = StringField()

我创建了一个函数,使用

从 ListField 中删除嵌入的文档

pull - 原子操作符

请检查以下内容:

def deleteItem(parent_id,name):
  Parent.get(id=parent_id).update_one(pull__list_items__name=name)

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

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

【问题讨论】:

    标签: python mongodb pymongo mongoengine


    【解决方案1】:

    我找到的临时解决方案是遍历列表项数组,直到找到满足条件的项并将其从列表中删除:

    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
    

    但如果有更好的解决方案,我宁愿只使用数据库来完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      相关资源
      最近更新 更多