MongoDB(7)- 文档插入操作

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB(7)- 文档插入操作

插入方法


db.collection.insertOne()

插入单条文档到集合中

db.collection.insertMany()

插入多条文档到集合中

db.collection.insert()

插入单条或多条文档到集合中

 

insertOne() 语法格式


db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)


只能传一个文档,不能是数组

 

insertMany() 语法格式


db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)


必传一个数组,即使是空数组

 

insert() 语法格式


db.collection.insert(
   <document or array of documents>,
   {
     writeConcern: <document>,
     ordered: <boolean>
   }
)


可以传单条文档或者文档数组

 

writeConcern

看着是一种出错捕捉机制,搞清楚要干嘛再更新吧

 

ordered

  • true:对数组中的文档执行有序插入,其中一个文档发生错误,MongoDB 将返回而不处理数组中的其余文档(默认)
  • false:无序插入,其中一个文档发生错误,则继续处理数组中的其他文档

 

三种 insert 方法的返回内容


// 插入单条文档
> db.test.insert({})
WriteResult({ "nInserted" : 1 })
// 插入多条文档
> db.test.insert([])
BulkWriteResult({
    "writeErrors" : [ ],
    "writeConcernErrors" : [ ],
    "nInserted" : 0,
    "nUpserted" : 0,
    "nMatched" : 0,
    "nModified" : 0,
    "nRemoved" : 0,
    "upserted" : [ ]
})


插入操作的重点知识

  • MongoDB 向集合里插入记录时,无须事先对数据存储结构进行定义,每个文档的数据结构都可以是不同的
  • 如果待插入的集合不存在,则插入操作会默认创建集合
  • MongoDB 中,插入操作以单个集合为目标
  • MongoDB 中的所有写入操作都是单个文档级别的原子操作

 

插入不指定 _id 字段的文档


db.test.insert( { item : "card", qty : 15 })

 

MongoDB 会自动给它分配一个 _id

db.test.find()

{ "_id" : ObjectId("60b4e2eeec0fd33d89e97a98"), "item" : "card", "qty" : 15 }

这些 Objectld 值与执行操作时的机器和时间有关

 

插入指定 _id 字段的文档


值 _id 必须在集合中唯一,以避免重复键错误

db.test.insert(
    { _id: 10, item: "box", qty: 20 }
)
db.test.find()
{ "_id" : 10, "item" : "box" , "qty": 20 } 


可以看到新插入文档的 id 值为设置的 id 值

 

插入文档数组


插入的多个文档无须具有相同的字段

db.test1.insert(
    [
        { _id: 11, item: "pencil", qty: 50, type: "no.2" },
        { item: "pen", qty: 20 },
        { item: "eraser", qty: 25 }
    ]
)


  • 的第一个文档包含一个 _id 字段和一个 type 字段
  • 第二个和第三个文档不包含 _id 字段
  • 因此,在插入过程中,MongoDB 将会为第二个和第三个文档创建默认 _id 字段


db.test1.find()
{ "_id" : 11, "item" : "pencil", "qty" : 50, "type" : "no.2" }
{ "_id" : ObjectId("60b4e98fec0fd33d89e97a99"), "item" : "pen", "qty" : 20 }
{ "_id" : ObjectId("60b4e98fec0fd33d89e97a9a"), "item" : "eraser", "qty" : 25 }


无序插入


db.products.insert(
   [
     { _id: 20, item: "lamp", qty: 50, type: "desk" },
     { _id: 21, item: "lamp", qty: 20, type: "floor" },
     { _id: 22, item: "bulk", qty: 100 }
   ],
   { ordered: false }
)


如果在插入其中一个文档期间发生错误,MongoDB 会继续将其余文档插入数组中

 

还有其他插入文档的方法


需要添加 upsert: true 选项

  • db.collection.update()
  • db.collection.updateOne()
  • db.collection.updateMany()
  • db.collection.findAndModify()
  • db.collection.findOneAndUpdate()
  • db.collection.findOneAndReplace()

 

不需要添加也可以插入文档

  • db.collection.save()
  • db.collection.bulkWrite()
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
3月前
|
NoSQL MongoDB 数据库
MongoDB 更新文档
10月更文挑战第14天
59 2
|
3月前
|
存储 NoSQL MongoDB
数据的存储--MongoDB文档存储(二)
数据的存储--MongoDB文档存储(二)
86 2
|
1天前
|
存储 监控 NoSQL
【赵渝强老师】MongoDB文档级别的并发控制
MongoDB使用WiredTiger存储引擎在文档级别进行并发控制,允许多个写操作同时修改不同文档,但对同一文档的修改需序列化执行。引擎采用乐观锁和意向锁机制处理冲突。通过视频讲解、插入大量文档示例及使用`mongotop`和`db.serverStatus()`命令,演示了如何监控MongoDB的锁信息和读写统计,展示了数据库和集合级别的写锁情况。
43 29
|
3月前
|
SQL NoSQL MongoDB
MongoDB 查询文档
10月更文挑战第15天
42 1
|
3月前
|
存储 NoSQL 关系型数据库
数据的存储--MongoDB文档存储(一)
数据的存储--MongoDB文档存储(一)
113 3
|
3月前
|
NoSQL MongoDB
MongoDB 删除文档
10月更文挑战第15天
53 0
|
3月前
|
存储 JSON NoSQL
MongoDB 插入文档
10月更文挑战第14天
42 0
|
4月前
|
SQL NoSQL Shell
03 MongoDB文档的各种增加、更新、删除操作总结
文章总结了MongoDB中文档的增删改操作,包括插入文档、更新现有文档以及删除文档的具体方法和示例。
146 0
|
6月前
|
DataWorks NoSQL fastjson
DataWorks操作报错合集之DataX进行MongoDB全量迁移的过程中,DataX的MongoDB Reader插件在初始化阶段找不到Fastjson 2.x版本的类库,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
7月前
|
存储 NoSQL Linux
【MongoDB】下载安装、指令操作
【MongoDB】下载安装、指令操作
203 1