mongodb - Microsoft Cosmosdb for Mongodb:将未分片的集合合并到分片的集合中
问题描述
我有 2 个类似文档的集合(即相同的对象,不同的值)。一个集合(X)在数据库 A 中未分片,另一个集合(Y)在数据库 B 中分片。当我尝试将集合 X 复制到数据库 B 中时,我收到错误消息,提示“共享吞吐量集合应该有一个分区键”。我也尝试使用 foreach insert 复制数据,但时间太长。
所以我的问题是,如何以有效的方式将数据从集合 X 附加到集合 Y?
CosmosDB 上的 Mongodb 版本是 3.4.6
解决方案
因为,目前 CosmosDB 中的 MongoDb 版本是 3.4.6,它不支持 $merge 和许多其他命令,例如 colleciton.copyTo 等。使用 Studio 3T 的导入功能也没有帮助。
我使用的解决方案是在我的本地 mongodb 上下载目标集合,清理它然后编写 Java 代码,该代码将从本地数据库读取我的干净数据并将其插入(或批量写入)到目标集合。这样,数据将被附加到目标集合中。我测量的速度是 1m 文档数(~750MB)的 2 小时,当然,这个数字可能会因各种因素而异,例如网络、文档大小等。
推荐阅读
- symfony - Symfony 5:如何在验证器中获取 isVerified 用户
- python - 如何在 wav 文件中可视化组合信号
- python - AttributeError:“字节”对象没有属性“告诉”
- xslt - XSLT - 拆分节点和组项目
- css - css水平滚动不考虑新的宽度后缩放
- javascript - 承诺后尝试访问数据
- memory - 为什么页面局部性会提高二级缓存命中率?
- javascript - msal.js 与移动浏览器有关
- android - Firebase:如何检查用户身份验证是否被另一个提供商覆盖?
- vba - VBA IsMissing 函数如何在幕后工作?