深入解析MongoDB中insert into select写法

 更新时间:2025年06月13日 09:14:48   作者:kahnyao  
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,这篇文章主要介绍了MongoDB中insert into select写法,需要的朋友可以参考下

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MongoDB数据库部署环境准备及使用介绍

    MongoDB数据库部署环境准备及使用介绍

    这篇文章主要为大家介绍了MongoDB数据库部署环境准备以及基本的使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 浅谈MongoDB内部的存储原理

    浅谈MongoDB内部的存储原理

    这篇文章主要介绍了浅谈MongoDB内部的存储原理,MongoDB是一个面向文档的数据库系统。使用C++编写,不支持SQL,但有自己功能强大的查询语法,需要的朋友可以参考下
    2023-07-07
  • MongoDB CRUD操作中的插入实例教程

    MongoDB CRUD操作中的插入实例教程

    这篇文章主要给大家介绍了关于MongoDB CRUD操作中的插入的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Windows系统安装运行Mongodb服务

    Windows系统安装运行Mongodb服务

    今天小编就为大家分享一篇关于Windows系统安装运行Mongodb服务,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Mongo DB增删改查命令

    Mongo DB增删改查命令

    本文给大家汇总介绍了一下Mongo DB数据库的增删改查命令以及部分的示例,有需要的小伙伴可以参考下,希望对大家学习Mongo DB能够有所帮助
    2016-12-12
  • db.serverStatus()命名执行时报无权限问题的解决方法

    db.serverStatus()命名执行时报无权限问题的解决方法

    这篇文章主要给大家介绍了关于db.serverStatus()命名执行时报无权限问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • mongodb的安装和开机自启动详细讲解

    mongodb的安装和开机自启动详细讲解

    这篇文章主要介绍了mongodb的安装和开机自启动详细讲解,,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • MongoDB 索引创建和查询优化的方法

    MongoDB 索引创建和查询优化的方法

    这篇文章主要介绍了MongoDB 索引创建和查询优化的方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • MongoDB创建一个索引而性能提升1000倍示例代码

    MongoDB创建一个索引而性能提升1000倍示例代码

    这篇文章主要给大家介绍了关于如何在MongoDB中创建一个索引而性能提升1000倍的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Mongo Shell 执行环境的基本操作

    Mongo Shell 执行环境的基本操作

    Mongo Shell 是 MongoDB 的交互式 JavaScript shell,用于与 MongoDB 数据库进行交互,这篇文章主要介绍了Mongo Shell 执行环境,需要的朋友可以参考下
    2025-02-02

最新评论