Mongo中现没有replace的方法,若要使用只能通过定义function的方式。
function中replace()方法可 参见javascript的replace()方法。
示例:
1.将article_title中“m”替换为“&&&&”:
db.getCollection("regex2").find({
_id:ObjectId("5d35700ad2970338fc00408e")
}).forEach(function(rep){
a = rep.article_title;
print("原字段:"+a);
b = a.replace('m', "&&&&");//将“m”替换为“&&&&”
print("替换后:"+b);
})
例一
由结果可看出,此次替换仅替换了匹配到的第一个字母,若要替换全部需在replace中应用正则。
db.getCollection("regex2").find({
_id: ObjectId("5d35700ad2970338fc00408e")
}).forEach(function(rep) {
a = rep.article_title;
print("原字段:" + a);
b = a.replace(/m/g, "&&&&");//g表示全局(global)模式
print("替换后:" + b);
})
例二
replace默认区分大小写,若模糊大小写需利用正则修饰符“i”。
db.getCollection("regex2").find({
_id: ObjectId("5d35700ad2970338fc00408e")
}).forEach(function(rep) {
a = rep.article_title;
print("原字段:" + a);
b = a.replace(/m/i, "&&&&");//i表示不区分大小写(case-insensitive)模式
print("替换后:" + b);
})
例三
若需将替换后的值重新写入文档中,可利用mongo语法中update
或save方法。
//save
db.getCollection("regex2").find({
_id: ObjectId("5d35700ad2970338fc00408e")
}).forEach(function(rep) {
a = rep.article_title;
b = a.replace(/m/i, "&&&&");
rep.article_title=b;
db.getCollection("regex2").save(rep);
});
//update
db.getCollection("regex2").find({
_id: ObjectId("5d35700ad2970338fc00408e")
}).forEach(function(rep) {
a = rep.article_title;
b = a.replace(/m/i, "&&&&");
db.getCollection("regex2").update({_id:rep._id},{$set:{article_title:b}});
})
网友评论