在Mongodb中搜索和替换
Search and replace in Mongodb?
给定100篇文章,每篇文章都有一个带有文章内容的body属性并且在该内容中有像"http://example.com/wp-content/uploads/5.jpg"这样的图像url
是否有一种方法可以浏览每个帖子的正文内容,然后寻找与"http://example.com/wp-content/uploads/5.jpg"匹配的内容,并将其替换为"http://amazon-bucket.aws.com/wp-content/uploads/5.jpg"之类的内容
谢谢!
不完全是,我的意思是,如果你不是在寻找"确切的字符串",并希望总是替换为"相同的"不同的字符串。
从本质上看,你正在寻找一个"正则表达式替换"的文档,可以通过.update()
执行。虽然 $regex
搜索是可能的,但没有"捕获"或选项将捕获的部分提供给语句的"更新"部分,例如 $set
。
为了进行这种更新,你需要循环你的文档并在代码中修改。但是批量操作API可以在这里提供一些帮助:
var bulk = db.collection.initializeOrderedBulkOp();
var counter = 0;
var query = { "url": { "$regex": "^http://example'.com" }};
db.collection.find(query).forEach(function(doc) {
// Inspect and replace the part of the string
bulk.find({ "_id": doc._id }).updateOne(
{ "$set": { "url": doc.url.replace("example.com","bucket.aws.com") } }
);
counter++;
// Update once every 1000 documents
if ( counter % 1000 == 0 ) {
bulk.execute();
bulk = db.collection.initializeOrderedBulkOp();
}
})
// Process any remaining
if ( counter % 1000 != 0 )
bulk.execute();
所以这仍然需要循环,但至少每处理1000个文档才将更新发送到服务器一次。
虽然不推荐,但我认为这是mongodb服务器端JavaScript功能的罕见用例之一,如果您经常需要的话。
这样做的好处是您不必来回传输文档,而只需在服务器上更改它们。您甚至不需要实现触发逻辑,只需使用cronjob和--eval
调用服务器端JS函数即可。
相关文章:
- Javascript搜索和替换需要包含更多内容
- 搜索并用jQuery替换整个HTML字符串
- javascript:搜索并用不同的颜色代码替换十六进制颜色代码
- IntellijJavascript多行结构搜索和替换
- 可以用两个搜索值替换JavaScript.replacement函数
- RegExp-替换搜索时的“html”标记并突出显示
- 在搜索表单中,替换空格或仅使用正则表达式的隐词和数字
- 如何使用regex在以前的搜索结果中进行搜索和替换
- JQuery 在渲染后搜索 dom 元素,并用其相应的值替换键
- 搜索/将自定义标记替换为 javascript 正则表达式
- 搜索与搜索和替换
- jQuery搜索和替换不起作用(Wordpress)
- javascript 或 PHP 来执行搜索和替换功能
- 多个下拉列表搜索替换字符串
- Javascript - 搜索网站的 HTML 并替换它
- 根据搜索/替换对替换字符串中的多个值
- 如何使用jquery/javascript搜索字符串并在页面加载时进行替换
- 捆绑前在Javascript中进行搜索和替换
- 在javascript/nodejs中搜索并替换所有内容
- javascript indexOf/替换多个搜索词