MongoDB:从字符串字段中删除第一个字符并更新该字段

Kha*_*lam 2 mongodb mongodb-query

在我的文档中,有一个字符串类型的字段imageUrl: '/xyz/....',但现在我需要从该字段中删除第一个字符,并像imageUrl: 'xyz/....'所有文档一样更新该字段。

sri*_*asy 5

在 MongoDB 版本上,您可以在.update()4.0中执行聚合管道,尝试下面的查询 - 这将用新值覆盖字段,有助于修剪原始字符串中的第一个字母:imageUrl$substr

db.collection.updateMany({}, 
 [{
    $set: {
      imageUrl: {
        $substrBytes: ["$imageUrl", 1, -1]
      }
    }
  }]
 );
Run Code Online (Sandbox Code Playgroud)

测试: mongoplayground

注意:一般来说,查询应该可以正常工作,但在过去,我见过一些.updateMany从客户端(例如robo3T旧版 mongo shell)执行的问题,如果您看到的是这样的情况,那么我建议使用.update()with option {multi : true}

更新:在最新的 MongoDB 版本 >= 上,3.4您需要使用$substrByteswhich 是$substr. 此外,如果您想检查/字段的第一个字符是否存在,imageUrl那么您需要添加{imageUrl: /^[/]/}的过滤器部分.updateMany()