当前位置: 代码网 > it编程>数据库>mongodb > 深入解析MongoDB中insert into select写法

深入解析MongoDB中insert into select写法

2025年06月13日 mongodb 我要评论
mongodb概念mongodb 是一个文档数据库(以 json 为数据模型),由 c++ 语言编写,旨在为 web 应用提供可扩展的高性能数据存储解决方案。mongodb 是一个介于关系数据库和非关

mongodb概念

mongodb 是一个文档数据库(以 json 为数据模型),由 c++ 语言编写,旨在为 web 应用提供可扩展的高性能数据存储解决方案。
mongodb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,数据格式是bson ,一种类似 json 的二进制形式的存储格式,简称binary json ,和 json 一样支持内嵌的文档对象和数组对象,因此可以存储比较复杂的数据类型。mongodb 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。原则上 oracle 和 mysql 能做的事情, mongodb 都能做(包括 acid 事务)。

mongodb特点:

半结构化,在一个集合中,文档所拥有的字段并不需要是相同的,而且也不需要对所用的字段进行声明。
弱关系, mongodb没有外键的约束,也没有非常强大的表连接能力。

优势:

mongodb 基于灵活的 json 文档模型,非常适合敏捷式的快速开发。与此同时,其与生俱来的高可用、 高水平扩展能力使得它在处理海量、高并发的数据应用时颇具优势。

mongodb中insert into select写法

创建测试数据

use testdb
db.test_t.insertone({_id:1,name:'zhangsan',age:30});
db.test_t.insertone({_id:2,name:'lisi',age:33});
db.test_t.insertone({_id:3,name:'wangwu',age:23});
db.test_t.insertone({_id:4,name:'zhaoliu',age:26});
db.test_t.insertone({_id:5,name:'sunqi',age:25});
db.test_t.insertone({_id:6,name:'zhouba',age:23});
db.test_t.insertone({_id:7,name:'wujiu',age:24});
db.test_t.insertone({_id:8,name:'zhengshi',age:29});

方法1:使用 aggregate 和 insert 实现

语法:

db.sourcecollection.aggregate([
  { $match: { /* 查询条件 */ } },    // 查询条件,可以根据需要设置
  { $project: { /* 可选:选择需要的字段 */ } },
  { $merge: { into: "targetcollection" } }  // 将查询结果插入到目标集合
])

解释:

  • aggregate():通过聚合管道查询 sourcecollection 中的数据。
  • $match:你可以在这里定义查询条件(类似 sql 中的 where)。
  • $project:用来选择字段,类似于 sql 中的 select
  • $merge:将查询结果插入到 targetcollection 中,相当于 sql 中的 insert into

示例:

db.test_t.aggregate([
  { $match: {"_id": {$lte: 3}} },  // 获取_id小于等于3的文档
  { $merge: { into: "student" } }  // 将数据插入到 student 中
])

注意: 

  • $merge 在 mongodb 4.2 及以上版本中可用。如果你使用的是较低版本的 mongodb,可能需要先查询数据,然后通过应用逻辑(例如,使用 insertmany)将数据插入目标集合。
  • $merge 会根据目标集合的不同配置(如 whenmatched 和 whennotmatched)对数据进行合并或者插入。你可以根据需要选择合适的选项。

方法2:先查询,再手动插入

// 查询数据
const data = db.sourcecollection.find({ /* 查询条件 */ }).toarray();
// 将查询到的数据插入到 targetcollection
db.targetcollection.insertmany(data);

示例

const data = db.test_t.find({ "_id": {$lte: 3} }).toarray();
db.student.insertmany(data);

到此这篇关于mongodb中insert into select写法的文章就介绍到这了,更多相关mongodb insert into select内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • mongodb创建的数据库在哪里

    mongodb创建的数据库在哪里

    mongodb 数据库的数据存储在指定的数据目录中,该目录可以位于本地文件系统、网络文件系统或云存储中,具体位置如下:本地文件系统:默认路径为 linux/ma... [阅读全文]
  • mongodb数据库文件在哪

    mongodb数据库文件在哪

    mongodb 数据库文件位于 mongodb 数据目录中,默认情况下为 /data/db,其中包含 .bson(文档数据)、ns(集合信息)、journal(... [阅读全文]
  • mongodb数据存储在哪

    mongodb数据存储在哪

    mongodb 采用分片集群架构,分片存储特定范围的数据,分片规则定义数据分布方式。副本集作为冗余机制,确保数据可用性。mongodb 使用 bson 格式存储... [阅读全文]
  • mongodb一般用哪个版本

    mongodb一般用哪个版本

    推荐使用 mongodb 最新版本(当前为 5.0),因为它提供了最新特性和改进。选择版本时,需考虑功能需求、兼容性、稳定性和社区支持,例如:最新版本具有事务、... [阅读全文]
  • mongodb能存什么

    mongodb能存什么

    mongodb 是一款 nosql 数据库,可存储以下类型的数据:json 文档二进制数据(gridfs)地理空间数据时间序列数据图形数据(通过 graphdb... [阅读全文]
  • mongodb是什么意思

    mongodb是什么意思

    mongodb是一款面向文档的、分布式数据库系统,用于存储和管理大量结构化和非结构化数据。其核心概念包括文档存储和分布式,主要特性有动态模式、索引、聚集、映射-... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com