gpt4 book ai didi

javascript - 在 Mongodb 中搜索和替换?

转载 作者:行者123 更新时间:2023-11-28 15:37:18 24 4
gpt4 key购买 nike

给定一组 100 个帖子,每个帖子都有一个包含帖子内容的 body 属性,并且该内容内有图像 url,例如“http://example.com/wp-content/uploads/5.jpg

有没有办法遍历每个帖子的正文内容,然后查找与“http://example.com/wp-content/uploads/5.jpg”匹配的任何内容,并将其替换为“http://amazon-bucket.aws.com/wp-content/uploads/5.jpg”之类的内容

谢谢!

最佳答案

不完全是,我的意思是如果您不是在寻找“精确的字符串”并且希望始终用“相同”的不同字符串替换。

本质上,您似乎正在寻找可以通过 .update() 执行的文档的“正则表达式替换”。虽然可以 $regex搜索时,没有“捕获”或选项可以将捕获的部分提供给语句的“更新”部分,例如 $set .

因此,为了进行此类更新,您需要循环文档并在代码中进行修改。但是Bulk Operations 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 个文档才会将更新发送到服务器一次。

关于javascript - 在 Mongodb 中搜索和替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25194772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com