【问题标题】:How to return popped element in mongodb如何在mongodb中返回弹出的元素
【发布时间】:2012-12-13 00:03:06
【问题描述】:

我想从数组中弹出一项,并获取该元素。

在mongodb中可以吗?

我没有找到这样的信息

http://docs.mongodb.org/manual/reference/operator/pop/

【问题讨论】:

    标签: mongodb mongomapper


    【解决方案1】:

    这是不可能的。 MongoDB 不会返回您之前使用正常更新获得的文档的任何部分,据说它可以返回完整的文档,而不仅仅是 findAndModify (http://docs.mongodb.org/manual/reference/command/findAndModify/) 上弹出的元素,然后您可以过滤掉该元素,第一个或最后一个。

    注意:我应该警告一下,findAndModify 基本上就像在查询中挑选出每个文档并对其进行操作,这就是它能够返回它的方式,因此您可能会看到跨越大量查询的一些性能损失。

    【讨论】:

      【解决方案2】:

      MongoDB 操作返回 full documents

      选项可能是:

      • 使用findAndModify命令,通过处理返回的文档得到数组程序端的弹出值。 (1 个查询)
      • 使用find获取文档,获取你想要在程序端弹出的值,然后发送update。 (2 个查询)

      【讨论】:

      • 第二个不是原子的,因此如果我是对的,可能会导致并发问题
      • 对于选项1,如果我的理解是正确的,对于类似$pop的运算符,没有办法选择性地获取弹出的元素但可以从旧值推断(通过设置new:false)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 2015-05-27
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多