当前位置: 首页 > news >正文

在 MongoDB 中复制一个 collection(集合)

方法一:使用 aggregate() 搭配 $out(推荐方式)

适用于复制到相同数据库内的新集合。

db.source_collection.aggregate([{ $match: {} },  // 可以加筛选条件{ $out: "target_collection" }
])
  • 如果目标集合已存在,会被覆盖。
  • 如果你使用 MongoDB 5.0+,推荐用 $merge 替代 $out(因为 $out 会 drop 再重建)。

方法二:使用 cloneCollection() 脚本(适用于任意数据库)

// 脚本方式
db.getCollection('source_collection').find().forEach(function(doc) {db.getCollection('target_collection').insert(doc);
});
  • 可以在 mongo shell 或 JavaScript 驱动里执行。
  • 可加筛选条件:如 find({ status: "active" })

方法三:通过 mongodump + mongorestore(适合跨数据库或跨服务器)

1. 导出

mongodump -d mydb -c source_collection -o dump/

2. 恢复

mongorestore -d mydb -c target_collection dump/mydb/source_collection.bson
  • 适合数据量大时使用。
  • 可跨数据库 / 集群 / 远程主机。

方法四:在程序中操作(如 Python)

from pymongo import MongoClientclient = MongoClient()
db = client["mydb"]source = db["source_collection"]
target = db["target_collection"]docs = source.find({})
target.insert_many(docs)
http://www.lryc.cn/news/571296.html

相关文章:

  • 以下是系统化的 Python基础学习框架,分为4个核心阶段,结合理论与实践,适合零基础快速入门并建立扎实的编程基础:
  • 【WPF】WPF ComboBox 数据驱动不刷新?SelectedItem 与 SelectedIndex 解析!
  • 什么是数据仓库的ETL
  • TortoiseSVN迁移到本地git
  • Tomcat 核心配置解析:4 大文件、乱码处理、端口与 Manager 配置
  • 企业ERP致胜秘籍:从流程革新到智能决策
  • 关系数据库-数据库事务处理与ACID原则
  • Android 开发问题:CardView 的阴影效果会受到父容器的裁切
  • STM32 实现解析自定义协议
  • HTTP 请求中的 `Content-Type` 类型详解及前后端示例(Vue + Spring Boot)
  • 为什么您应该停止使用 1080 玻璃
  • eBPF(6)--uprobe
  • MRI学习笔记-BrainNet Viewer
  • python大学生志愿者管理系统-高校志愿者管理信息系统
  • llama_index chromadb实现RAG的简单应用
  • 基于Java的Excel列数据提取工具实现
  • React Native 搭建iOS与Android开发环境
  • leetcode_3584子序列首尾元素乘积最大值
  • phpstorm无缝切换vscode
  • 在Linux上搭建FRP服务器及Docker部署FRP实现内网穿透方案二(Nginx前置 + FRP TCP穿透)
  • C++智能指针(详细解答)
  • 多维度剖析Kafka的高性能与高吞吐奥秘
  • FPGA基础 -- Verilog语言要素之向量线网与标量线网
  • 自然语言处理(NLP)核心技术:从词嵌入到Transformer
  • 微信小程序一款不错的文字动画
  • 密度泛函涨落理论在医疗人工智能中的应用与展望:多尺度物理驱动智能的新范式
  • Spring Boot + MyBatis + Redis Vue3 Docker + Kubernetes + Nginx
  • OpenCV 视频文件读取
  • Linux核心文件(core file)详解
  • Vue 3 常用响应式数据类型详解:ref、reactive、toRef 和 toRefs