【问题标题】:using pull_all and push_all with python/mongoengine将 pull_all 和 push_all 与 python/mongoengine 一起使用
【发布时间】:2013-01-24 08:20:11
【问题描述】:

我在 Mongo 中有这个对象:

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

我有一个 Python 方法应该更新 Mongo 对象,在它的 mystuff Listfield 值前面加上一个给定的值。因为 Mongoengine 还没有办法将对象插入到列表中的某个点(并且有 made it a low priority 添加此功能),所以我尝试:

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

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

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

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

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

    但我认为最好的办法可能是使用 get 检索整个文档,修改客户端代码中的 mystuff 字段,然后使用 save 将其发回。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 2015-08-06
      • 1970-01-01
      • 2018-08-29
      • 2013-11-21
      相关资源
      最近更新 更多