MongoDB基础以及一些聚合操作
--洱涷zZ
前情提要
1.学习MongoDB的几大难点
- MongoDB是一种非关系型数据库,从mysql转变到Mongo需要摒弃传统的关系型数据库理念,不然很有可能会用一种错误的方式去使用和设计
- MongoDB基于JSON数据库模型,其鼓励使用更多的文档嵌套方式来减少多表关联的设计,从而达到易用,高性能的目的,但是这种反范式的文档模型设计,目前没有完整的理论支持,即:即使想系统的学习,也没有太好的书籍和材料供参考
- MongoDB通过分片来进行横向扩展,分片的设计和调优相对复杂,主要是要考虑其本身的一些技术实现和底层原理,以及数据均衡带来的性能影响,这方面需要深度学习
2.学习MongoDB的目的
- 理解MongoDB的意义,了解使用它的场景和价值
- 什么是文档模式设计,以及其数据安全、事务…
- 掌握进阶的架构设计方法以及实践的案例,比如:两地三中心,数据中台…
MongoDB的特色
MongoDB | RDBMS(传统的关系型数据库) | |
---|---|---|
数据模型 | json文档模型 | 关系模型 |
数据库类别 | OLTP | OLTP |
CRUD操作 | MQL/SQL(非主流) | SQL |
高可用 | 复制集(默认高可用部署) | 集群模式 |
横向扩展能力 | 通过原生分片完善支持(特色) | 主从复制,集群和分片 |
索引支持 | 以B树为基础的全文索引、地理位置索引… | B树,B+树,hash索引… |
开发难度 | 易 | 复杂 |
数据容量 | 没有理论上限 | 千万、亿 |
注:OLTP(用来做前端交互式应用,也称为面向交易的处理过程,其基本特征是前台接收的用 户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操 作快速响应的方式之一)
OLAP(用来做后端离线批处理的分析型场景,对OLTP数据库中的数据进行再加工,从这 些海量的业务数据中提取出对企业决策分析有用的信息)
MongoDB的一些基础操作以及引伸的一些问题
1. MQL和SQL的条件查询对照表
2. 关于MongoDB基础增删改
-
创建
创建数据库 use user; 创建集合 db.createCollection("phone"); 创建固定集合 db.createCollection("company", { capped: true, autoIndexId: true, size: 6142800, max: 10000 });
-
展示
展示所有的数据库 show dbs; 展示所有的集合 show collections;
-
插入数据
插入一条数据 db.userDetail.insertOne({ title: 'MongoDB', description: 'MongoDB 是一个 Nosql 数据库', by: 'xiaochen', url: 'www.baidu.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }) 一次插入多条数据 db.userDetail.insertMany([{ title: 'MongoDB1', description: 'MongoDB 是一个 Nosql 数据库', by: 'xiaochen', url: 'www.baidu.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }, { title: 'MongoDB2', description: 'MongoDB 是一个 Nosql 数据库',