参考资料
官方网站:https://www.mongodb.com/zh-cn
MongoDB 介绍
MongoDB 是一个基于分布式文件存储的数据库,采用 BSON 存储文档数据,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。默认端口 27017。
MongoDB 应用场景
1、用在存储一些监控数据,真的很方便,增加字段不用改表结构,而且学习成本极低,例如记录服务器日志等。
2、用在了物流快递应用,将骑手、商家的信息存储在 MongoDB,通过地理位置查询,很方便的查找附近的商家、骑手。
3、游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新。
4、物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
MongoDB 概念
SQL术语 | MongoDB术语 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 无 | 表连接/MongoDB不支持 |
primary key | primary key | 主键/MongoDB自动将_id字段设置为主键 |
MongoDB 查询
1、查询像关系型数据库,可以 limit() 限制条数;可以利用 skip() 和 limit() 配合实现分页;甚至还可以使用 sort() 实现排序。
2、通过正则表达式查询,功能更强大;还可以利用比较查询、in 查询,查询某一范围的 document。
3、可以利用 $and 和 $or 关键词组成复杂的查询。
4、投影查询,指定需要的 filed,其他的内容不再返回。
5、聚合查询主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。
> dbName.collectionName.find().pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "费哥哥好帅!",
"description" : "真滴很帅。",
"by" : "费哥哥",
"tags" : [
"暖男",
"博学",
"强大"
],
"likes" : "小萝莉"
}
MongoDB 索引
1、索引通常能够极大的提高查询的效率,索引分类大概有:单字段索引、复合字段索引等。
2、另外可以通过 explain() 查看执行计划。
3、涵盖查询:索引中的 filed 就是你投影查询的全部 filed,那么就不会去 collection 中获取数据了。
MongoDB 副本
MongoDB 复制是将数据同步在多个服务器的过程。MongoDB 的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
MongoDB 分片
MongoDB 存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
MongoDB 备份与恢复
1、使用 mongodump 命令来备份数据,该命令可以导出所有数据到指定目录中。
2、使用 mongorestore 命令来恢复备份的数据。
MongoDB 监控
可以利用 MongoDB 下的一个内置工具:mongostat、mongotop。
MongoDB 图形化工具
MongoDB Compass