mongodb 批量替换内容的语句

场景:需要在mongo中,对content表的text(富文本字符串)字段做按条件匹配后的批量修改

方法:

// 注意上面的集合要和下面的集合名称相同
db.test.find(
	{
		'content': /^.*要替换的字符串.*$/
	}
).forEach(
	function (item) {
		var tmp = String(item.content)
		tmp = tmp.replace(/要替换的字符串/g,'替换成字符串')
		if (tmp == null){
				print(item.content)   
		}
		item.content = tmp ;
//		print(tmp)
		print(db.test.save(item))
//             db.test.save(item)
	}
 
)


示例:

db.content.find(
    { 
        "contentType" : "ARTICLE", 
        "text" : /^.*https:\/\/www\.nnn\.com\/#\/list\?id=1073&amp\;channel=1010002001&amp\;hmnType=0.*$/i, 
        "authorId" : "100",
//        "_id" : ObjectId("123456")  可以使用单条先验证
    }
).forEach(
	function (item) {
		var tmp = String(item.text)
		tmp = tmp.replace(/https:\/\/www\.nnn\.com\/#\/list\?id=1073&amp\;channel=1010002001&amp\;hmnType=0/g,'https://lll.hhh.com/#/list?id=1073&channel=1010002001')

		if (tmp == null){
		    	print("no") 
				print(item.text) 
		}else{
		    print("yes") 
		   
		  // 	item.text= tmp;
		   	
		   	  //print(item) 
		   	  
		   	  print(item._id) 
		   	  
            // db.content.save(item);  注:save方法没执行成功,改用updateOne
            
        	db.content.updateOne({_id:item._id},{$set:{'text':tmp}});	

            

		}
	
	});

tips:
1.text字段对应的正则表达式,需要特别注意。使用gpt直接问它,让它给你对应的正则

 2.注意function中的save方法,我自己处理的时候,修改后没有保存成功,所以改成了updateOne,也可以用replaceOne

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值