MongoDB是面向文档的数据库,而非关系型数据库。它扩展了关系型数据库的众多有用功能,如辅助查询,范围查询和排序。
它将原来的行的概念换成更加灵活的文档模型。它没有模式:文档的键不会事先定义也不会固定不变。
MongoDB将数据存储为一个文档,数据结构由键值(<代码>键=,gt;价值> 代码)对组成.MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。
有些关系型数据库的常见功能MongoDB并不具备,比如联接(加入)和复杂的多行事务。
MongoDB的扩展性强,其采用的面向文档的数据模型使其可以自动在多台服务器之间分割数据。
MongoDB性能优越。它将内存管理工作交由操作系统处理;它利用查询优化器记住执行查询最高效的方式,它利用预分配数据文件的方式(用空间)换取性能的稳定。
MongoDB的管理理念就是尽可能的让服务器自动配置,简化数据库的管理。比如如果主服务器挂掉,它会自动切换到备份服务器上,并且将备份服务器提升为活跃服务器。
<强> NoSQL简介强>
NoSQL (NoSQL=> sudo服务mongod开始代码>进入mongo shell:
<代码类=" language-shell "> mongo 代码>列出数据库:
<代码类=" language-shell "> show dbs 代码>显示当前数据库对象:
<代码> db 代码>默认是测试。
切换数据库:
<代码类=" language-shell ">使用& lt; database> 代码>停止mongod:
<代码> sudo服务mongod停止代码>或者使用下面更加稳妥的方式停止MongoDB:
<代码> #切换到管理数据库(让自己具有管理员权限) 使用管理 db.shutdownServer() 代码>刚安装的mongodb并没有开启用户权限验证,所以连接时不需要认证。
引用>MongoDB的基本概念
在mongodb中基本的概念是文档,集合,数据库。
SQL术语/概念 MongoDB术语/概念 解释/说明 数据库 数据库 数据库 表格 集合 数据库表/集合 行 文档 数据记录行/文档 列 场 数据字段/域 指数 指数 索引 表连接 表连接,MongoDB不支持 主键 主键 主键,MongoDB自动将_id字段设置为主键文档
文档类似于关系数据库中的行。多个键及其关联的值有序的放置在一起便是文档。<强>在JS中,文档表示为对象强>。
每个文档都有一个特殊的键<代码> _id> 代码,它在文档所处的集合中是唯一的。
<强>几个重要的概念:强>
<李>
文档中的键/值对是<强>有序的强>。
李> <李>文档的键是字符串。一般情况键可以使用utf - 8字符。
<李>键不能有<代码> \ 0 代码>空字符。它是用来表示键的结尾。李> <李> <代码>。代码>和<代码> 代码>美元只有在特定环境才能使用李> <李>以<代码> _ 代码>开头的键是保留的李>
李> <李>MongoDB不但<强>区分类型>强,也<强>区分大小写>强。下面是两组不同的文档:
<=坝镅詊avascript代码类> {3}“foo”: {“foo”:“3”} 代码><=坝镅詊avascript代码类> {3}“foo”: {“Foo”: 3} 代码>? 李> <李> MongoDB的文档<强>不能有重复的键强>。李>
集合
集合可以被看作没有模式的表。
<强>子集合:强>
组织集合的一种惯例是使用<代码>。> 代码字符分开的命名空间划分的<强>子集合>强。比如:
blog.post和blog.authors,这样做只是了使组织结构更好些,也就是说博客这个集合(这里根本就不需要存在)及其子集合没有任何关系。
数据库
一个MongoDB实例可以承载多个数据库。不同的数据库存放在不同的文件中
要记住数据库名最终会变成文件系统里的文件,所以数据库名必须遵守一些约定。
保留的特殊数据库:
MongoDB数据库学习