mongodb 数组添加_NoSQL之MongoDB——简介
MongoDB是一种开源文档型数据库,它具有高性能,高可用性,自动扩展性
1.文档数据库
MongoDB用一个文档来表示一条记录,文档的数据结构由键值对组成。MongoDB文档类似于JSON对象,字段值可能是文档,数组,或文档数组。
使用文档的优点:
- 文档中字段值的数据类型同大多数编程语言中的原生数据类型一致。
- 嵌入式文档和数组减少了连接查询的需求。
- 动态的文档结构支持多态性。
2.主要特性
高性能
MongoDB支持高性能数据存储。特别地:
- 支持嵌入式数据模型以减少对数据库系统的I/O
- 利用索引实现快速查询,并且嵌入式文档和集合也支持索引
丰富的查询语言
MongoDB提供了丰富的查询语言以支持读写操作和聚集操作、文本检索、地理信息查询
高可用性
MongoDB的复制能力被称作复制集(replica set),它提供了自动的故障迁移和数据冗余。一个复制集是一组包含了相同数据的多台MongoDB服务器,它提供了冗余性和加强了数据的可用性。
横向扩展
MongoDB的横向扩展能力是其核心功能的一部分:
- 分片的数据分布在服务器集群上。
- 带标签的分片能够引导数据到指定的分片上。
支持多存储引擎
包括:WiredTiger Storage Engine,MMAPv1 Storage Engine。此外,MongoDB 提供可插拔存储引擎API,允许第三方开发者为MongoDB开发存储引擎。
3.数据库和集合
MongoDB 存储BSON文档,例如数据记录在集合中,集合在数据库中。
3.1数据库
在MongoDB 中数据库持有集合。
在Mongo shell中,选中一个数据库使用如下命令:use ,例如:
use myDB
创建数据库
如果待操作的数据库不存在,那么在第一次向MongoDB 存储数据时,MongoDB会创建这个数据库。例如,使用如下命令操作一个不存在的数据库。
use myNewDB
db.myNewCollection1.insert( { x: 1 } )
insert()操作创建了数据库myNewDB,若集合myNewCollection1也不存在,同样地集合myNewCollection1也被创建。
3.2集合
MongoDB 在集合中存储文档,集合类似于关系数据库中的表。
创建一个集合
如果一个集合不存在,使用下面命令时集合会被创建:
db.myNewCollection2.insert( { x: 1 } )
db.myNewCollection3.createIndex( { y: 1 } )
insert() 和 createIndex()在集合不存在的情况下会创建集合。
显式创建集合
MongoDB 提供了db.createCollection()方法来显示地创建一个集合。可以为创建的集合指定参数,例如设置集合的大小或者文档的验证规则,如果不需要指定这些参数,那么没必要显示地创建一个集合。
文档验证(3.2版新特性)
默认情况下,一个集合中的文档不必具有相同的结构 ,
一个集中的文档不需要具有一系列相同的字段,并且不同文档中字段的数据类型可以不同。
修改文档结构
可以更改集合中的文档结构,如添加新字段,删除现有字段,或将字段值更改为一种新的类型,更新文档结构
3.3固定集合
3.3.1概述
固定集合,即具有固定大小的集合,它支持基于插入顺序的插入和查询这两种高通量操作。固定大小的集合的工作方式类似于循环缓存:一旦一个集合被填满,待插入的文档会覆盖掉最先插入的文档。
3.3.2行为
插入顺序
固定集合保证了插入顺序,因此对于查询操作而言,不需要索引的支持就可以返回多个按顺序排列的文档。没有索引的开销,固定集合支持更高的插入吞吐量。
自动删除最先插入的文档
为了给新文档让出存储空间,固定集合自动删除最先插入的文档而不需要显示的删除操作。
例如,集合oplog.rs中存储了副本集操作日志,这里副本集使用了固定集合。考虑下面对固定集合可能的操作:
- 存储由大容量系统生成的日志信息。在无索引的情况下,文档插入固定集合的速度与将日志信息写入文件系统的速度相似。此外,先进先出的特性保证了事件的顺序,同时管理了存储的使用。
- 在固定集合中缓存少量数据。由于缓存重读而非写,你应确保这个集合总在工作集中(例如,内存中)或接受一点点写操作,因为索引需要写操作。
_id 字段索引
固定集合含有_id字段,此字段索引是默认的。
3.3.3限制和建议
更新
如果你要更新固定集合中的文档,创建索引以防止全表扫描。
文档大小(3.2版本变更)
如果更新或替换操作改变了文档大小,则操作失败。
删除文档
不能删除固定集合中的文档,可使用drop() 命令删除整个固定集合并新建之。
分片
固定集合不允许分片。
查询效率
使用自然排序可高效地检索最新插入的元素。这是(有点)像追踪一个日志文件。
聚集操作符$out
不能使用聚集管道操作符$out将结果写入固定集合
3.3.4过程
创建固定集合
在mongo shel中,使用db.createCollection()方法创建固定集合,创建固定集合的时候要指定集合的字节大小,MongoDB将会提前为所创建的固定集合分配存储空间。固定集合的字节大小包含了内部使用的空间大小。
db.createCollection( "log
mongodb 数组添加_NoSQL之MongoDB——简介相关推荐
- MongoDB系列(一):简介及安装
2019独角兽企业重金招聘Python工程师标准>>> 什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加 ...
- mongodb 数字 _id_MongoDB学习笔记MongoDB简介及数据类型
欢迎点击上方蓝字关注我 本文所使用的MongoDB版本为 4.0.10 > db.version();4.0.10 一.MongoDB 介绍 1. MongoDB 的特点 MongoDB 是一个 ...
- MongoDB和Node.js的Mongoose简介
Mongoose是一个JavaScript框架,通常在带有MongoDB数据库的Node.js应用程序中使用. 在本文中,我将向您介绍Mongoose和MongoDB,更重要的是,这些技术适合您的应用 ...
- 为mongoDB数据库添加账号步骤
1.点击桌面左下角得开始菜单输入powershell并以管理员运行 2.输入mongo进行数据库连接 3.输入show dbs查看数据库中都有哪些数据库 4.输入 use admin 进入到admin ...
- php mongodb 子查询,MongoDB数组子查询elemMatch
MongoDB数组子查询elemMatch 在 MongoDB数组子查询elemMatch详解 语法 db_name.collection_name.find({field:{$elemMatch:{ ...
- 黑马博客——详细步骤(九)项目功能的实现之mongoDB数据库添加账号
5. mongoDB数据库添加账号 1. 以系统管理员的方式运行powershell 2. 连接数据库 mongo 3. 查看数据库 show dbs 4. 切换到admin数据库 use admin ...
- mongodb数据库添加账号
以下步骤可以为mongodb数据库添加账号 1.以系统管理员的身份运行powershell (在cmd也可以操作) 2.连接数据库 mongo 3.查看数据库 show dbs 4.切换到admin数 ...
- 数据库添加账号(mongoDB)
mongoDB数据库添加账号 大概删库跑路的前辈太多了,觉得可以设个账号(哈哈哈) 不多哔哔,具体操作如下:每一步都有示例图(哦豁,详尽) 实操开始 1,以管理员身份运行powershell(额~略了 ...
- MongoDb数组操作 - unwind解包、group分组统计、sort排序
MongoDB统计文档(Document)的数组(Array)中的各个元素出现的次数 一,问题描述 [使用 unwind 操作符 "解包" Document 里面的Array中的每 ...
最新文章
- R语言使用yardstick包的pr_curve函数评估二分类(binary)模型的性能、并使用autoplot函数可视化模型的PR曲线(precision recall)
- Ubuntu Linux 安装 .7z 解压和压缩文件
- 美国物联网平台提供商Evrythng获得2480万美元B轮融资
- python批量删缩进_Python工具PyCharm常用快捷键
- 面向对象程序设计的术语
- 价值800的swapidc鸟云模板
- 好棒,测试妹子都能看懂的Jenkins Docker安装教程
- final、static、finally总结
- 第三方支付易宝支付的具体实现
- 北邮数电 爱课堂答案 Verilog专题
- 【机器学习】监督学习的分类:判别/生成模型,概率/非概率模型、参数/非参数模型
- python总结与思考_学Python很久但是一直无法提升!你有思考过究竟是为什么吗?...
- 1024为大家带来个猜数字游戏
- 微信公众号自定义菜单创建接口
- 判断当前手机设备的类型(安卓还是IOS)
- 关于树莓派4B的屏幕输入信号源由HDMI变为AV2的处理方法
- 一个解决MacBook Pro 突然连接无线不能上网 方案
- 今天是十月十日卖萌日
- 某教务管理系统APP逆向分析之协议漏洞 2018·2
- 测绘专业计算机编程要求,关于一些测绘圈子的信息,你需要了解!