【问题标题】:MongoDB Update (Insert a List of Item to an Array)MongoDB 更新(将项目列表插入数组)
【发布时间】:2012-05-10 03:39:46
【问题描述】:

我想在 Mongo 的多行数组中添加几个项目。我该怎么做?

我想从这个开始:

{'x': 'h', arr: [1,2,3] }
{'x': 'h', arr: [1,3] }

并添加数组 [6,8],其中 x 等于 'h':

{'x': 'h', arr: [1,2,3,6,8] }
{'x': 'h', arr: [1,6,8] }

【问题讨论】:

    标签: arrays mongodb mongodb-query


    【解决方案1】:

    我认为您正在寻找的是 $pushAll 运算符。看这里:

    http://docs.mongodb.org/manual/reference/operator/pushAll/#pushall

    【讨论】:

    【解决方案2】:

    如果您有一个名为 yourCollection 的 MongoDB 集合和一个名为 x 的记录,您将使用以下内容更新子数组:

    db.test.update( {"name":"x"}, {"$pushAll" : {arr : [1, 2, 3]}} )

    这里的重要关键字是$pushAll。您可以使用它来将项目添加到单个记录属性内的数组中。

    【讨论】:

    • 从 2.4 版起已弃用。改用 $each
    【解决方案3】:

    如果您想更新多条记录,请将true 作为第四个参数传递给更新函数,这一点很重要:

    db.test.update( {"name": "x"}, {"$pushAll": {"arr": [1, 2, 3]}}, false, true)
    

    根据更新()的 MongoDB shell 语法:

    db.collection.update( criteria, objNew, upsert, multi )
    
    • upsert - 如果记录不存在,则插入一条。 Upsert 只插入一个文档
    • mutli - 指示是否应更新所有符合条件的文档而不是仅更新一个

    【讨论】:

      【解决方案4】:

      最简单的方法是使用传统的更新操作

        db.urColl.update(
          { x: "h" },
          { $push: { arr: { $each: [6,8] } } },
          { multi: true }
        );`
      

      【讨论】:

        【解决方案5】:

        $pushAll
        2.4 版后已弃用:请改用 $push 运算符和 $each

        $pushAll 运算符将指定的值附加到数组中。

        $pushAll 运算符具有以下形式:

        { $pushAll: { <field>: [ <value1>, <value2>, ... ] } }
        

        如果您指定单个值,$pushAll 将表现为$push

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-15
          • 1970-01-01
          • 2012-09-10
          • 1970-01-01
          • 1970-01-01
          • 2021-10-09
          • 2020-04-27
          • 1970-01-01
          相关资源
          最近更新 更多