MongoDB 字段部分内容替换 SQL整理

前言

最近接到一个需求,是需要将一些数据的图片,视频等带http链接的内容替换成https.

以下是我整理的一些SQL, 在此记录,仅供参考
单字段替换

复制代码
db.getCollection('db').find({"cloumn":{$exists:true, $regex:'http:'}}).forEach(function(item){
    var str = item.cloumn;
	var newStr = str.replace('http:', "https:");
	
    db.getCollection("db").update({_id:item._id},{$set:{cloumn: newStr }});  
});

数组字段

第一种只判断字段是否存在

复制代码
db.getCollection('db').find({"cloumn":{$exists:true}}).forEach(function(item){
    var list = item.cloumn;
	for(var i in list) {
	  var str = list[i];
	  var newStr = str.replace('http:', "https:");
	  list[i] = newStr;
	}
	
    db.getCollection("db").update({_id:item._id},{$set:{cloumn: list}});  
});

第二种数组写法,更严谨,判断了字段是不是数组

复制代码
db.getCollection('db').find({"cloumn":{$exists:true}, $where:"Array.isArray(this.cloumn)"}).forEach(function(item){
    var list = item.cloumn;
	for(var i in list) {
	  var str = list[i];
	  // 此处判断是否为null   
	  if(str != null){
	    var newStr = str.replace('http:', "https:");
	    list[i] = newStr;
	  }
	}
	
    db.getCollection('db').update({_id:item._id},{$set:{cloumn: list}});  
});

嵌套数组的话就多次遍历循环替换就好了。

觉得有用的过来看看指导指导,有更好方式的也可以留言,我可以更新进来,一起学习!

相关推荐
躲在云朵里`4 分钟前
MyBatis(二)
java·数据库·mybatis
数巨小码人24 分钟前
PostgreSQL中的权限管理简介
数据库·postgresql
qq_1715388527 分钟前
让MySQL更快:EXPLAIN语句详尽解析
android·数据库·mysql
yb0os136 分钟前
手写一个简单的线程池
java·开发语言·数据库·计算机·线程池·juc
我科绝伦(Huanhuan Zhou)1 小时前
关系数据库基础入门
前端·数据库·mysql
yt948321 小时前
mysql统计数据库大小
数据库·mysql·oracle
别来无恙1494 小时前
深入解析MySQL中的HAVING关键字:从入门到实战
数据库·mysql
雷神乐乐4 小时前
Oracle常用函数
数据库·sql·oracle
luckyext9 小时前
SQL的RAND用法和指定生成随机数的范围
运维·服务器·数据库·sql·sqlserver·运维开发·mssql
文牧之9 小时前
Oracle 的 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 命令
运维·数据库·oracle