假设我有一个网址:aaa.something.com/id
,可以在多个不同字段的多个集合中找到。
我想通过regex(或类似代码)将其更改为bbb.something.com/id
,以便只查找和替换URL字符串的前缀。
以下内容:
db.tests.find({ "url": /^aaa\.something\.com\// }).forEach(function(doc) {
doc.url = doc.url.replace(/^aaa\.something\.com\//, "bbb.something.com/");
db.tests.update({ "_id": doc._id },{ "$set": { "url": doc.name } });
});
假设该字段始终为url
。
但是在数据库中,可以在许多位置找到URL,例如:
content.photo
content.media
content.media[i].data
avatar
url
答案 0 :(得分:1)
您可以使用通配符text index,然后使用$text查找与指定正则表达式匹配的文档。获得这些文档后,您可以编写Javascript代码来查找与正则表达式匹配的密钥,并根据需要替换它们。