mongoDB文档插入与SQL表insert方式基本相同。在关系数据库中,我们需要先定义表,然后才能将记录插入到文档,而在mongoDB中,由于无需预定义模式,因此,在集合不存在的情形下,直接insert就会生成新的集合。如果已经存在,则会在现有的集合内增加新文档。而且插入的文档可以与集合上的其他文档使用不同的键或键值类型。本文主要描述mongoDB文档插入,供大家参考。

预备热身
Linux下快速安装MongoDB
Windows平台下安装MongoDB
mongoDB 启动与停止
mongo shell连接到mongoDB及shell提示符下执行js脚本
mongoDB简介及关键特性
SQL与mongoDB对比及映射

一、文档插入语法

db.collection.insertOne(obj, ) 插入单个文档到一个集合(3.2版本有效),可选参数为w, wtimeout
db.collection.insertMany( [objects], ) 插入多个文档到一个集合(3.2版本有效),可选参数为w, wtimeout
db.collection.insert(obj) 传统的插入方式

对于文档的插入操作,如果当前集合不存在,则自动创建该集合,否则直接插入文档
mongoDB中所有的插入操作都属于单个文档级别的原子性操作,即相当于关系型数据库的行级锁
mongoDB在文档插入的时候,如果未显示指定_id列,则会自动添加该列(使用ObjectIds),并将该列作为该集合的主键列

二、插入单个文档

//演示版本

db.version()
3.2.9

db.users.insertOne(
… {
… name: “sue”,
… age: 19,
… status: “P”
… }
… )
{
“acknowledged” : true, //返回操作的状态的器objectId
“insertedId” : ObjectId(“57ece2cece13bb2bef55fb0b”)
}

db.users.find() //查看刚刚插入的文档
{ “_id” : ObjectId(“57ece2cece13bb2bef55fb0b”), “name” : “sue”, “age” : 19, “status” : “P” }

三、插入多个文档

db.users.insertMany(
… [
… { name: “bob”, age: 42, status: “A”, }, //将多个文档以数组的方式一次性插入到集合
… { name: “ahn”, age: 22, status: “A”, }, //用[]包含多个文档,各文档之间用逗号分割
… { name: “xi”, age: 34, status: “D”, }
… ]
… )
{
“acknowledged” : true, //返回操作结果及其对应的ObjectId
“insertedIds” : [
ObjectId(“57ece37fce13bb2bef55fb0c”),
ObjectId(“57ece37fce13bb2bef55fb0d”),
ObjectId(“57ece37fce13bb2bef55fb0e”)
]
}

db.users.find({“_id”:ObjectId(“57ece37fce13bb2bef55fb0d”)}) //基于ObjectId查询特定文档
{ “_id” : ObjectId(“57ece37fce13bb2bef55fb0d”), “name” : “ahn”, “age” : 22, “status” : “A” }

四、传统的插入方式

db.users.drop() //先删除集合
true

//插入单个文档

db.users.insert(
… {
… name: “sue”, //Author : Leshami
… age: 19, //Blog : http://blog.csdn.net/leshami
… status: “P”
… }
… )
WriteResult({ “nInserted” : 1 }) //这些显示插入的状态及记录数

//插入多个文档

db.users.insert(
… [
… { name: “bob”, age: 42, status: “A”, },
… { name: “ahn”, age: 22, status: “A”, },
… { name: “xi”, age: 34, status: “D”, }
… ]
… )
BulkWriteResult({ //此处显示插入之后的状态,错误数,插入记录数等
“writeErrors” : [ ],
“writeConcernErrors” : [ ],
“nInserted” : 3,
“nUpserted” : 0,
“nMatched” : 0,
“nModified” : 0,
“nRemoved” : 0,
“upserted” : [ ]
})

五、Bulk Insert方式

//下面使用runCommand方法来实现批量插入

db.runCommand(
… {
… insert: “users”,
… documents: [
… { _id: 2, user: “ijk123”, status: “A” },
… { _id: 3, user: “xyz123”, status: “P” },
… { _id: 4, user: “mop123”, status: “P” }
… ],
… ordered: false,
… writeConcern: { w: “majority”, wtimeout: 5000 }
… }
… )
{ “ok” : 1, “n” : 3 }
//上面使用runCommand方式插入了3个文档,返回状态OK为1,表明插入成功,n的值为3,即3个文档。

//查看集合users下的所有文档,如下
//从返回结果可以看出,集合users下的文档有不同的key,即所谓的无模式

db.users.find()
{ “_id” : ObjectId(“580c35e92e2323641d4b5065”), “name” : “sue”, “age” : 19, “status” : “P” }
{ “_id” : ObjectId(“580c35fd2e2323641d4b5066”), “name” : “bob”, “age” : 42, “status” : “A” }
{ “_id” : ObjectId(“580c35fd2e2323641d4b5067”), “name” : “ahn”, “age” : 22, “status” : “A” }
{ “_id” : ObjectId(“580c35fd2e2323641d4b5068”), “name” : “xi”, “age” : 34, “status” : “D” }
{ “_id” : 2, “user” : “ijk123”, “status” : “A” }
{ “_id” : 3, “user” : “xyz123”, “status” : “P” }
{ “_id” : 4, “user” : “mop123”, “status” : “P” }

六、小结

1、在mongoDB 3.2版本后,文档的insert操作属于原子性操作,可以理解为关系型数据库的行级锁
2、mongoDB属于无模式,针对非结构化数据,因此可以无需预定义模式,即一个集合可以存储很多不同键或不通类型键值的文档
3、除了常规的insert方法之外,runCommand方式可以实现Bulk insert来完成文档插入

mongoDB 文档插入相关推荐

  1. mongodb php代码实例,MongoDB文档的更新(php代码实例)

    MongoDB更新文档分为两大类: 文档替换,使用新文档完全替换掉旧文档 修改器,修改部分文档 文档替换 使用文档替换非常的简单,下面来看演示: $collect->insertOne(['na ...

  2. mongodb php update,MongoDB文档的更新(php代码实例)

    MongoDB更新文档分为两大类:文档替换,使用新文档完全替换掉旧文档 修改器,修改部分文档 文档替换 使用文档替换非常的简单,下面来看演示:$collect->insertOne(['name ...

  3. MongoDB 文档字段增删改

    MongoDB 基于CRUD(create,read,update,delete)方式实现了对集合上的文档进行增删改查.对于集合上字段的增删改,可以使用set或者unset修改器来实现.也可以使用文档 ...

  4. mongodb文档操作1

    mongodb文档操作1 mongodb文档操作1 插入操作 1. 使用方法insert()分别插入以下文档到集合stu中. 2. 使用方法insertMany()插入以下一组文档到集合stu中. 删 ...

  5. 3-MongoDB常用的命令-数据库创建-文档插入

    目录: 一.连接数据库 二.案例需求 三.数据库的操作 3.1 选择和创建数据库 3.2 数据库的删除 四.集合的操作 4.1 集合的显式创建(了解) 4.2 集合的隐式创建 4.3 集合的删除 五. ...

  6. mongoDB 文档概念

    mongoDB 文档概念 什么是文档 文档是 mongodb 基本的数据组织单元,类似于mysql 中的记录 文档由多个键值对组成,每个键值对表达一个数据项 属于 bson 数据 ps:  bson ...

  7. Python 操作Word文档插入图片和表格实例演示

    Python 操作Word文档插入图片和表格实例演示 效果图 实现过程 ① python-docx 库安装 ② word 文档插入图片演示 ③ word 文档插入表格演示 [ 文章推荐 ] Pytho ...

  8. python 给word添加背景图片_Python如何使用word文档插入图片和表格

    Python如何使用word文档插入图片和表格 发布时间:2020-10-26 13:49:29 来源:亿速云 阅读:101 作者:挣扎的蓝藻 这篇文章运用简单易懂的例子给大家介绍Python如何使用 ...

  9. 用python将word文档导入数据库_python读取word文档,插入mysql数据库的示例代码

    表格内容如下: 1.实现批量导入word文档,取文档标题中的数字作为编号 2.除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql # wuyanfeng # -*- coding: ...

最新文章

  1. java mysql 自动提交_Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧...
  2. Silverlight 多窗口的实现.
  3. 结队项目之需求分析与原型设计
  4. 简单介绍Python中的几种数据类型
  5. centos6 yum源_Centos6安装Zabbix3.4.15注意事项
  6. Mysql数据库-面试题
  7. Spring 依赖注入(一、注入方式)
  8. python set 和 ^ 的妙用
  9. python中文版下载-python3.8.1汉化版
  10. 全球及中国卫星产业应用建设布局及投资机会分析报告2022-2028年版
  11. 在线的MySQL数据库表结构对比工具
  12. mysql教学版_MySQL 8从零开始学(视频教学版)
  13. 【深入理解TcaplusDB技术】入门Tcaplus-JDBC开发
  14. 中南大学复试上机:1009: 安全路径
  15. 如何计算Java对象的大小
  16. 激活windows10系统提示错误代码0x800705b4怎么解决
  17. 定时循环发送UDP消息(例如:控制远程电脑的开机、关机、重启、打开和关闭程序等)—— 定时执行专家
  18. LeetCode 316. Remove Duplicate Letters
  19. windows sql server 如何卸载干净?
  20. 机器学习——RBF神经网络

热门文章

  1. Ajax:ajax跨域解决方案代理机制原理及实现
  2. C语言自我实现itoa函数
  3. 说说我的专业计算机作文,说说我自己作文范文5篇
  4. sql中常用的正则匹配
  5. phpeditor编写php_PHP如何搭建百度Ueditor富文本编辑器
  6. 小小线段树 以HDU-1166 敌兵布阵为例
  7. 牛逼!3年的产品经理,拿下了快手的高级Java工程师
  8. Android 开发艺术探索 看不懂对着书敲慢慢理解,设计模式之禅总结,平时记录的笔记,3w多次字防止丢失,留存。
  9. bootstrap fileinput 文件上传和回显
  10. 【图像识别】身份证号码识别matlab源码