在python/mongoengine中使用pull_all和push_all

在python/mongoengine中使用pull_all和push_all,python,mongodb,mongoengine,Python,Mongodb,Mongoengine,我在Mongo有一个对象: mystuff = ListField(ReferenceField(Asset, dbref=True)) 我有一个Python方法,它应该更新Mongo对象,用给定的值在其mystuff Listfield值前面加上前缀。因为Mongoengine还没有办法将对象插入列表中的某个点(并且必须添加此函数),所以我尝试: 将当前列表的内容保存到临时变量(oldlist) 更新DB条目,使用“pull_all”修饰符清空mystuff列表(这是的一部分) 再次更新数据

我在Mongo有一个对象:

mystuff = ListField(ReferenceField(Asset, dbref=True))
我有一个Python方法,它应该更新Mongo对象,用给定的值在其mystuff Listfield值前面加上前缀。因为Mongoengine还没有办法将对象插入列表中的某个点(并且必须添加此函数),所以我尝试:

  • 将当前列表的内容保存到临时变量(oldlist)
  • 更新DB条目,使用“pull_all”修饰符清空mystuff列表(这是的一部分)
  • 再次更新数据库条目,使用update(push)将新添加的项推送到mystuff列表
  • 再次更新DB条目,使用“push_all”修饰符和oldlist变量将旧内容推回到mystuff列表中
  • “pull_all”似乎需要某种修饰语,但如果我能弄清楚它想要什么,我会很生气

    有人有什么想法吗?当然,理想的情况是在update()中添加一个“insert_at”修饰符,但这不是我能做到的。边缘生活等。

    将从列表中提取一系列元素。在你的情况下,我相信这将是
    oldlist

    然而,我认为您最好的选择可能是使用检索整个文档,修改客户机代码中的mystuff字段,然后使用

    正如您所注意到的,用于就地更新文档的工具是有限的。

    将获取要从列表中拉出的元素列表。在你的情况下,我相信这将是
    oldlist

    然而,我认为您最好的选择可能是使用检索整个文档,修改客户机代码中的mystuff字段,然后使用

    正如您所指出的,用于就地更新文档的工具是有限的