【问题标题】:Update multiple field values MongoDB by replacing values通过替换值更新多个字段值 MongoDB
【发布时间】:2018-11-24 11:42:51
【问题描述】:

我希望在 MongoDB 中更新我的对象,如下所示

来自

{ 
    "_id" : BinData(0, "vcbcbcbcvbdfsdgbbdvZNImOMQM6g=="), 
    "mypath" : "/sample/old/path/content/a/b", 
    "report_suite" : "mongo", 
    "target_s" : "/sample/old/path/content/c/d", 
    "topic_s" : "feed", 
    "id" : "/sample/old/path/content/retrieved/d4076995-f8a7-4b9f-912b-6f251a2fddcb", 
    "timestamp" : NumberLong(1527875028199)
}

{ 
    "_id" : BinData(0, "vcbcbcbcvbdfsdgbbdvZNImOMQM6g=="), 
    "mypath" : "/sample/new/path/content/a/b", 
    "report_suite" : "mongo", 
    "target_s" : "/sample/new/path/content/c/d", 
    "topic_s" : "feed", 
    "id" : "/sample/new/path/content/retrieved/d4076995-f8a7-4b9f-912b-6f251a2fddcb", 
    "timestamp" : NumberLong(1527875028199)
}

基本上所有具有路径 /sample/old/path/content 到 sample/new/path/content 的字段值

请对此提供帮助。

我试过了

db.content.updateOne(
   { id:"/sample/old/path/content/retrieved/d4076995-f8a7-4b9f-912b-6f251a2fddcb" },
   {
     $set: { "target_s": "/sample/new/path/content/c/d" }
   }
)

但是,我不想将“/sample/new/path/content/c/d”作为值,而只是将“/sample/old/path/content”替换为“/sample/new/path/内容”和其他其余部分相同

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以指定$set 中要更新的所有字段:

    db.content.updateOne(
       { id:"/sample/old/path/content/retrieved/d4076995-f8a7-4b9f-912b-6f251a2fddcb" },
       {
         $set: {
            "mypath": "new path",
            "target_s": "new path",
            "id": "new path",
          }
       }
    )
    

    【讨论】:

    • 是的,谢谢,我可以使用它添加多个字段,但是如何设置新路径的一部分。我有超过 10000 个条目说,在这种情况下我可以使用 updateMany。但同样,这些路径包含唯一 id,因此很难添加 10000 次唯一值。我寻找的只是'用“/sample/new/path/content”替换“/sample/old/path/content”'。之前和之后的内容对于每个条目都是可变的
    • MongoDB 无法做到这一点,您必须遍历每个文档并单独更新每个文档,您可以在此处查看更新运算符 - docs.mongodb.com/manual/reference/operator/update-field
    • @snaem 你可以试试这个stackoverflow.com/questions/50771767/…
    猜你喜欢
    • 1970-01-01
    • 2014-11-15
    • 2013-07-18
    • 2021-06-24
    • 2011-04-27
    相关资源
    最近更新 更多