mongodb学习笔记1

1. MongoDB是一个文档数据库

2. 文档数据库

MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。

优点是:

        文档(即对象)对应于许多编程语言中的内置数据类型。
        嵌入式文档和数组减少了对昂贵连接的需求。
        动态模式支持流畅的多态性。
        MongoDB将文档存储在集合中。集合类似于关系数据库中的表。

除集合外,MongoDB还支持:
        只读视图
        按需实例化视图

3. 高性能

MongoDB提供高性能的数据持久化。特别是,对嵌入式数据模型的支持减少了数据库系统上的I / O操作。索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键。

4. 丰富的查询语言

MongoDB支持丰富的查询语言以支持读写操作(CRUD)以及数据聚合,文本搜索和地理空间查询。

5. 高可用

MongoDB的复制工具(副本集)是一组维护相同数据集合的 mongod实例,提供了冗余和提高了数据可用性。提供:自动故障转移、数据冗余。

6. 水平拓展

分片将数据分布在一个集群的机器上;支持基于分片键创建数据区域。在平衡群集中,MongoDB仅将区域覆盖的读写定向到区域内的那些分片。

7. 支持多种存储引擎

WiredTiger存储引擎,内存存储引擎。另外,MongoDB提供可插拔的存储引擎API。

8. 数据库

在MongoDB中,文档集合存在数据库中。

9. 集合

MongoDB将文档存储在集合中。集合类似于关系数据库中的表。
创建集合:MongoDB提供了db.createCollection()使用各种选项显式创建集合的方法,例如设置最大大小或文档验证规则。如果未指定这些选项,则无需显式创建集合,因为在首次存储集合数据时,MongoDB会创建新集合。
默认情况下,集合不要求其文档具有相同的模式。也就是说,单个集合中的文档不需要具有相同的字段集,并且字段的数据类型可以在集合中的不同文档之间有所不同。但是在更新和插入操作期间对集合强制执行文档验证规则。
修改文档结构:要更改集合中文档的结构,例如添加新字段,删除现有字段或将字段值更改为新类型,请将文档更新为新结构。
唯一标识符:集合被分配了一个不变的UUID。副本集的所有成员和分片群集中的分片的集合UUID均相同。

10. 视图

基于已存在的集合或者 View (视图) 创建只读的 View 支持.
视图是只读的; 通过视图进行写操作会报错;
索引使用:视图使用其上游集合的索引,不能基于视图创建, 删除或重建索引, 也不能获取视图的索引列表;
排序操作:不能指定 $natural 排序;
重命名:不能重命名视图;
分片视图:如果视图依赖的集合是分片的, 那么视图也视为分片的.
Collation:视图不继承集合的默认collation。 
视图上的字符串比较使用视图的默认collation。尝试更改或覆盖视图默认collation的操作将因错误而失败。 
如果从其他视图创建视图,则无法指定与源视图collation不同的collation。 
如果执行涉及多个视图的聚合,例如与$lookup或$graphLookup,则视图必须具有相同的collation。 
修改:可以通过删除或者重建的方式修改视图, 也可以使用 collMod 命令

11. 封顶集合

封顶集合 capped collection 是固定大小的集合, 支持高吞吐的插入操作和根据插入顺序的查询操作. 当一个集合填满了被分配的空间, 则通过覆盖最早的文档来为新的文档腾出空间.
顺序插入:历史查询不需要索引排序. 没有这种索引开销, 封顶集合可以支持更高的插入吞吐量.
自动删除:为了给新的文档腾出空间, 封顶集合会自动删除集合中最早的文档。
_id 索引:封顶集合有 _id 字段并且有一个基于 _id 字段的默认索引.
更新:如果需要更新封顶集合中的文档, 请创建一个索引, 来避免更新操进行集合扫描.
文档大小:更新或替换文档大小的操作会失败
文档删除:能删除封顶集合中的文档. 要删除集合中的所有文档,请使用 drop() 方法删除集合, 并重新创建封顶的集合.
分片:不能对封顶集合进行分片操作.
查询:使用自然顺序 (natural ordering) 来有效地检索集合最近插入的元素.
聚合 $out:聚合管道操作符 $out不能将结果写入封顶集合.
创建:必须使用 db.createCollection() 方法显式地创建封顶集合,创建封顶集合时, 必须预先指定集合的最大容量。最小容量是4096,并且会自动提升用户指定的size满足256的倍数。还可以指定最大文档数量,但是在达到最大size限制后,会删除旧文档腾出空间。
可以将普通集合转为封顶集合,转换命令将获得写入锁,并将阻止其他操作,直到它完成。例如:
        db.runCommand({"convertToCapped": "mycoll", size: 100000});

12. 文档

MongoDB将数据记录存储为BSON文档。
文档结构:MongoDB文档由字段和值对组成,字段的值可以是任何BSON 数据类型,包括其他文档,数组和文档数组。
字段名称是字符串:
字段名称_id保留用作主键;它的值在集合中必须是唯一的,不可变的,并且可以是数组以外的任何类型。
字段名称不能包含null字符。
顶级字段名称不能以$字符开头。从MongoDB 3.6开始,服务器允许存储包含点(即.)和美元符号(即 $)的字段名称。但是目前不支持对这两个特殊字段的查询
MongoDB使用点符号访问数组的元素或者访问嵌入式文档的字段;
文件限制:
BSON文档的最大大小为16 MB。
MongoDB会在执行写操作后保留文档字段的顺序;
_id字段始终是文档中的第一个字段,_id字段可以包含除数组之外的任何BSON数据类型的值。为确保复制正常进行,请勿在_id 字段中存储BSON正则表达式类型的值。如果客户端发送的文档中没有_id 字段,则mongod会添加该_id字段并生成ObjectId。
包含renaming字段名称的更新可能会导致文档中字段的重新排序。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值