首先说一下 MongoDB 是什么?
MongoDB 是一个介于关系数据库和非关系数据库之间的产品, 是非关系数据库当中功能最丰富, 最像关系数据库的
MongoDB 是一个基于分布式文件存储的数据库
NoSQL (not only sql)是对不同于传统的关系型数据库的数据库管理系统的统称不需要遵循关系型数据库的 ACID 规则,
用于超大规模数据的存储, 这些类型的数据存储不需要固定的模式, 无需多余操作就可以横向扩展
************************************************************************************
关系型和非关系型的对比:
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL) (SQL)
- 数据和关系都存储在单独的表中
- 数据操纵语言, 数据定义语言
- 严格的一致性
- 基础事务
NoSQL
- 代表着不仅仅是 SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键 - 值对存储, 列存储, 文档存储, 图形数据库
- 最终一致性, 而非 ACID 属性
- 非结构化和不可预知的数据
- CAP 定理
- 高性能, 高可用性和可伸缩性
NoSQL 强调 Key-Value Stores 和 文档数据库 的优点, 而不是单纯的反对 RDBMS
NoSQL 的优点 / 缺点
优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性, 半结构化数据
- 没有复杂的关系
缺点:
- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
*****************************************************************************
MongoDB 是文档存储类型的, 文档存储一般用类似 json 的格式存储, 数据结构由键值 (key=>value) 对组成, 存储的内容是文档型的
这样也就有有机会对某些字段建立索引, 实现关系数据库的某些功能
******************************************************************************
MongoDB 的安装配置:
这个自己百度, 教程很多, https://jingyan.baidu.com/article/e52e36156372ce40c60c5194.html
http://www.runoob.com/mongodb/mongodb-window-install.html
安装好测试成功之后, 安装可视化工具 Robomongo.
反正我当时在安装配置和连接的时候碰到好多坑, 当时也没记录, 总之都是百度可以解决的问题
*******************************************************************************
RDBMS 与 MongoDB 对应的术语:
文档中的键 / 值对是有序的
文档中的值不仅可以是在双引号里面的字符串, 还可以是其他几种数据类型(甚至可以是整个嵌入的文档)
MongoDB 区分类型和大小写
MongoDB 的文档不能有重复的键
文档的键是字符串除了少数例外情况, 键可以使用任意 UTF-8 字符
**************************************************************************
了解了上述基本概念后, 最重要还是 CRUD 操作
参考 https://www.cnblogs.com/garinzhang/p/mongoDB_basic_usage.html
show dbs: 显示数据库列表
show collections: 显示当前数据库中的集合(类似关系数据库中的表)
use db name: 切换当前数据库 - 将 local 切换为 admin
db.dropDatabase(); 删除当前数据库
db.getMongo(); 查看当前 db 的链接机器地址
显式地创建一个新的集合:
- db.createCollection(<name>, { capped: <boolean>,
- autoIndexId: <boolean>,
- size: <number>,
- max: <number>,
- storageEngine: <document>,
- validator: <document>,
- validationLevel: <string>,
- validationAction: <string>,
- indexOptionDefaults: <document> } )
这个命令创建名字为 user, 最大存储空间为 5m, 最多 5000 个文档的集合.
添加数据: 没有固定的列, 根据添加的数据为准
修改数据 : 相当于 update user set name = 王五 where age = 33;
删除数据:
查询数据:
1: select * from user;
2: select distict name from user; 过滤掉 name 中的相同数据
根据列过滤数据
3: select * from user where age = 15;
4: select * from user where age >15;
5: select * from user where age <22;
6:select * from user where age >= 25;
7: select * from user where age <= 25;
8:
9: select * from user where name like % 呵 %; 模糊查询
10: select name, age from user;
当然 name 也可以用 true 或 false, 当用 ture 的情况下河 name:1 效果一样, 如果用 false 就是排除 name, 显示 name 以外的列信息
11:select name, age from user where age >25; 查询指定列的数据
12: 按照年龄升序排列
降序排
13:select * from user where name = 呵呵 and age = 85
14:select top 2 * from user; 查询前两条数据
15: 查询 2 条以后的数据
16:
来源: http://www.bubuko.com/infodetail-2509342.html