js css html

MongoDB字符串替换

2022-06-16  本文已影响0人  AC编程

一、更新普通字段

1.1 样例
db.dynamic.updateMany(
  {member_icon:{"$exists":true}},
  [{
    $set: {member_icon: {
      $replaceOne: { input:"$member_icon", find:"oss-cn-shenzhen.aliyuncs.com", replacement:"oss.alanchen.com" }
    }}
  }]
);
1.2 说明

1、第一部分{member_icon:{"$exists":true}}是匹配查询,用于过滤要更新的文档,并且该位置可以加快查询速度。

2、第二部分($set: { member_icon: {...)是更新聚合管道(请注意方括号表示使用聚合管道)

二、更新数组

2.1 样例
db.dynamic.updateMany(
  {"attachments.urls":{"$exists":true}},
  [{
    $set: {
      "attachments.urls": {
        $map: {
          input: "$attachments.urls",
          in: {
            $replaceOne: {
              input: "$$this",
              find: "oss-cn-shenzhen.aliyuncs.com",
              replacement: "oss.alanchen.com"
            }
          }
        }
      }
    }
  }]
);
2.2 说明

attachments是一个数组,urlsattachments里的数组,我们需要迭代attachments.urls数组的循环并替换urls$map迭代attachments.urls数组的循环,$replaceOne替换字符串。

三、更新数组里的对象字段

3.1 样例
db.dynamic.find({"attachments.url":{"$exists":true}})
    .sort({
        _id: -1
    }).forEach( function(item) {

     item.attachments.forEach(function(e) {
        e.url =  e.url.replace('oss-cn-shenzhen.aliyuncs.com','oss.alanchen.com');
     })
     db.getCollection("dynamic").update({_id:item._id},{$set:{attachments: item.attachments}});
 });
3.2 说明

ttachments是一个数组,url是attachments里对象的一个字段。

参考资料
在mongodb中的字符串数组中查找和替换

MongoDB通过forEach循环实现Replace

上一篇 下一篇

猜你喜欢

热点阅读