1

我在 Mongo 中有这个对象:

mystuff = ListField(ReferenceField(Asset, dbref=True))

我有一个 Python 方法,它应该更新Mongo 对象,在它的mystuff Listfield 值前面加上给定的值。因为 Mongoengine 还没有办法将对象插入到列表中的某个点(并且添加此函数的优先级较低),所以我尝试:

  1. 将当前列表的内容保存到一个临时变量(oldlist
  2. 更新数据库条目,使用“pull_all”修饰符(它是mongoengine的一部分)清空mystuff列表
  3. 再次更新数据库条目,使用 update(push)将新添加的项目推送到mystuff列表
  4. 再次更新DB 条目,使用“push_all”修饰符和oldlist变量将旧内容推回mystuff列表。

似乎“pull_all”需要某种修饰符,但如果我能弄清楚它想要什么,我会很危险。

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

4

1 回答 1

1

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

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

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

于 2013-01-24T00:20:11.347 回答