首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS DocumentDB BulkUpdate长运行时间

AWS DocumentDB BulkUpdate长运行时间
EN

Stack Overflow用户
提问于 2021-03-31 18:02:54
回答 1查看 490关注 0票数 1

我仍然是MongoDB/非关系模型数据存储的新手(来自于BI/DWH,关系数据库的经验),所以我正在努力理解如何编写MongoDB。请温柔点。:)

MongoDB版本: 3.6.0

问题是:

  • I在AWS文档DB实例中的DB中有一个集合,
  • 这个集合代表了大约1.5TB的磁盘空间。很长一段时间以来,其中一个字段一直以字符串数据类型的形式编写,尽管它实际上是一个日期字段。为了正确查询该集合,我需要将数据类型从字符串更改为日期。为此,我编写了以下查询:

代码语言:javascript
复制
var bulk = db.collection_name.initializeOrderedBulkOp();
var counter = 0;
db.collection_name.find().forEach(function(data) {    var updoc = {        "$set": {}    };
     var myKey = "snapshot_date";
     updoc["$set"][myKey] = new Date(data.snapshot_date);
     bulk.find({        "_id": data._id    }).update(updoc);
     counter++;
     if (counter % 1000 == 0) { bulk.execute(); bulk = db.collection_name.initializeOrderedBulkOp();    }});

我在上个星期一(两天前)开始了这个查询,它仍然在运行。我已经检查了它是否仍然在运行,并且我看到引擎正在运行,cloudwatch显示了CPU利用率、空闲内存和正在更新的文档的活动。

我的问题是:这个查询能提高效率吗?

我正在尝试更新每一个文档,而不过滤哪些文档应该更新,哪些不应该更新,我知道这一点很多。

然而,即使在关系数据库中,我也认为这不会花费这么长时间。

我应该尝试一种不同的技术来更新这个集合,还是使用指定的dtype创建一个新的集合?

EN

回答 1

Stack Overflow用户

发布于 2021-04-05 12:49:16

如前所述,您正在执行775 As的单独更新操作。虽然在1000大批量中执行此操作比一次执行一次要好,但它仍然需要很长的时间才能完成。更多的性能将是大量更新文档范围,比如50000,并发布多个更新。MongoDB: how to update n records based on ObjectID中有足够的代码可以帮助您更新这种技术的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66892986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档