我在 Mongo 中有这个对象:
mystuff = ListField(ReferenceField(Asset, dbref=True))
我有一个 Python 方法,它应该更新Mongo 对象,在它的mystuff Listfield 值前面加上给定的值。因为 Mongoengine 还没有办法将对象插入到列表中的某个点(并且添加此函数的优先级较低),所以我尝试:
- 将当前列表的内容保存到一个临时变量(oldlist)
- 更新数据库条目,使用“pull_all”修饰符(它是mongoengine的一部分)清空mystuff列表
- 再次更新数据库条目,使用 update(push)将新添加的项目推送到mystuff列表
- 再次更新DB 条目,使用“push_all”修饰符和oldlist变量将旧内容推回mystuff列表。
似乎“pull_all”需要某种修饰符,但如果我能弄清楚它想要什么,我会很危险。
有人有什么想法吗?当然,理想的情况是在update()中添加一个“insert_at”修饰符,但这不在我的掌控之中。边缘的生活等等。