mongodb - 如何将数据从一个集合复制到 MongoDB 中的另一个现有集合
问题描述
我在 MongoDB 中有一个coll-1
和。coll-2
所以,我需要在不干扰集合数据的情况下将数据从一个复制coll-1
到coll-2
另一个(两个集合都在同一个数据库中),我不想这样做mongoexport
,mongoimport
因为每次我们需要更新少量数据时,我都应该收集大量数据方便的。
解决方案
当您使用 mongoDB V4.2 并且您的两个集合在同一个数据库中并且存在时,您需要使用$merge:
试试这个查询:
db.getCollection('coll-1').aggregate( [
{ $merge : { into: { coll: "coll-2" }, on: "_id", whenNotMatched: "insert" } }
])
col-1 中的文件:
/* 1 */
{
"_id" : ObjectId("5e1f7ac3f35652fb779fcf3e"),
"random1" : 1
}
/* 2 */
{
"_id" : ObjectId("5e1f7acff35652fb779fd310"),
"random1" : 2
}
col-2 中的文件:
/* 1 */
{
"_id" : ObjectId("5e1f7adcf35652fb779fdb42"),
"random2" : 1
}
/* 2 */
{
"_id" : ObjectId("5e1f7ae5f35652fb779fde24"),
"random2" : 2
}
结果 :
/* 1 */
{
"_id" : ObjectId("5e1f7adcf35652fb779fdb42"),
"random2" : 1
}
/* 2 */
{
"_id" : ObjectId("5e1f7ae5f35652fb779fde24"),
"random2" : 2
}
/* 3 */
{
"_id" : ObjectId("5e1f7ac3f35652fb779fcf3e"),
"random1" : 1
}
/* 4 */
{
"_id" : ObjectId("5e1f7acff35652fb779fd310"),
"random1" : 2
}
由于我想将所有内容写入其中coll-1
,在此coll-2
之前我没有任何聚合阶段$merge
,您需要将其$merge
作为聚合管道的最后阶段(出于测试目的,您实际上可以删除它并通过几次空运行验证数据& 然后执行实际操作)。也$merge
有很多选项可以通过几个类似 - 如果字段值on
匹配和其他选项很少怎么办,所以请阅读 MongoDB 文档。
推荐阅读
- google-sheets - 谷歌电子表格——我如何在这个电子表格中总结我的工资?
- javascript - 为什么每次刷新页面时 app.js 都会调用构造函数?
- python - 熊猫中的列重复重命名
- python - Python/Django 或 D3 中的自定义离散滑块
- powershell - 将对象转换为字符串数组 Powershell
- facebook - AccessToken.CurrentAccessToken.UserID 上的空引用错误
- google-oauth - OAuth2 和 Google API:关于访问令牌过期时间
- docker - Docker - 无法在 Kubernetes 集群上启动 Webpack 开发服务器
- python - 你如何乘以保持相同小数位的小数
- 3d - 对特定类别的多边形进行三角剖分