Javascript MongoDB正则表达式替换
我的表名是:table_video 我在数据库中的字段名是:url\u value 其值为:abcd/abcd.m3u8 我需要的值:新的/新的.m3u8 “abcd”有多个值,上面的url只是一个例子Javascript MongoDB正则表达式替换,javascript,regex,mongodb,replace,mongodb-query,Javascript,Regex,Mongodb,Replace,Mongodb Query,我的表名是:table_video 我在数据库中的字段名是:url\u value 其值为:abcd/abcd.m3u8 我需要的值:新的/新的.m3u8 “abcd”有多个值,上面的url只是一个例子 var cursor = db.table_video.find(); while (cursor.hasNext()) { var x = cursor.next(); print("\n\n-----------------------------------"); print
var cursor = db.table_video.find();
while (cursor.hasNext()) {
var x = cursor.next();
print("\n\n-----------------------------------");
print("Before : url_value : "+x['url_value']);
x['url_value'] = x['url_value'].replace(/^(.*?)\/test\/(.*?)\/(.*?)\.m3u8$/g, $1/test/$2_NEW/$2_NEW.m3u8);
print("After : url_value : "+x['url_value']);
db.table_video.update({_id : x._id}, x);
}
当我在mongo控制台中执行上述命令时,它给出了一个错误:2015-11-28512:40:08.342+0530 ReferenceError:$1未定义
非常感谢您的任何帮助如果您的正则表达式错误,您可以使用此1获得预期结果 但实现这一点的最佳方法是使用操作以获得最大效率
var bulk = db.table_video.initializeUnorderedBulkOp();
var count = 0;
db.table_video.find().forEach(function(doc) {
var newUrlValue = doc.url_value.replace(/^(.*?)\/test\/(.*?)\/(.*?)\.m3u8$/, '$1/test/$2_NEW/$3_NEW.m3u8');
bulk.find( { '_id': doc._id } ).updateOne( {
'$set': { 'url_value': newUrlValue }
});
count++;
if (count % 100 === 0) {
// Execute per 100 operation and re-init
bulk.execute();
bulk = db.table_video.initializeUnorderedBulkOp();
count = 0;
}
})
// Clean up queues
if (count > 0) bulk.execute();
如果MongoDB版本比2.6版本旧,则需要使用while循环
var cursor = db.table_video.find();
while (cursor.hasNext()) {
var x = cursor.next();
print("\n\n-----------------------------------");
print("Before : url_value : "+x['url_value']);
var newUrlValue = x['url_value'].replace(/^(.*?)\/test\/(.*?)\/(.*?)\.m3u8$/, '$1/test/$2_NEW/$2_NEW.m3u8');
print("After : url_value : "+newUrlValue);
db.table_video.update({ _id : x._id }, { '$set': { 'url_value': newUrlValue } } );
}
在mongodb版本4.2中,您可以使用它来获取匹配,然后您可以使用它来替换部分模式我的正则表达式已经在Kate中工作,即使我检查了您提供的链接,但是它在mongodb@user2767817你的正则表达式是错误的,它在Mongo中不起作用。使用Uchiha提供的一个。Uchiha提供的Regex是正确的,但是,当我在mongodb中使用时,它会给出错误:2015-11-28812:40:08.342+0530 ReferenceError:$1未定义请您的问题包括新代码hi@zypA13510,感谢您指出这一点。请随意编辑答案。我会批准的。使用您的评论作为编辑摘要。@zypA13510我重写了决定