【问题标题】:How to update a specific element in all documents of a mongodb collection如何更新 mongodb 集合的所有文档中的特定元素
【发布时间】:2016-12-04 22:47:39
【问题描述】:

我的 MongoDB 数据库中名为 categories 的集合中的文档示例如下:

{
    "_id": "Cookbooks",
    "parent": "Non-Fiction",
    "ancestors": [
        "Books",
        "Non-Fiction",
        "Cookbooks"
    ]
}

此类别集合中的所有其他条目都具有相同的架构,并且有数百个。我想要做的是在 ancestors 数组的第一个位置向所有这 100 个条目/文档插入一个额外的“All”元素。例如:

{
    "_id": "Cookbooks",
    "parent": "Non-Fiction",
    "ancestors": [
        "All",
        "Books",
        "Non-Fiction",
        "Cookbooks"
    ]
}

有没有一种方法不需要编写完整的脚本,只需使用 mongo shell 或任何其他简单方法即可完成? :/

【问题讨论】:

    标签: mongodb mongoose mongodb-query


    【解决方案1】:

    要在 ancestors 数组的第一个位置推送“All”,您应该使用 $postiion: 0 并更新所有记录应该使用 multi:true

    在 MongoDB 中:

    db.collectionName.update({},
       { $push: { "ancestors": {$each: ["All"], $position: 0} }},
       {multi:true})
    

    在猫鼬中:

    ModelName.update({},
           { $push: { "ancestors": {$each: ["All"], $position: 0} }},
           {multi:true},
           function(err, result) {
              if(err) {
                 // return  error
              }
              //return success
    });
    

    【讨论】:

    • 嗨,谢沙布!非常感谢! :D
    【解决方案2】:

    您可以通过 mongo shell 推送值。

    这里是查询:

    db.w6.update(
      { _id: "Cookbooks"},
      { $push: { "ancestors": "All" }}
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多