概述
事情的起因要从最近的一个新产品说起,最近部门有一个新的大数据产品规划,在考虑技术实现时,有一个动态表字段扩展的需求,比如原来表结构里只有a、b字段,需要不断的往里新增c、d、e等等字段,并且数据量也特别大。
于是就去寻找实现方案,针对这种数据模型无法确定的情况,非关系型数据库是比较合适的,于是找到了MongoDB。虽然最后选择了使用ES来实现,但是在这段时间也把MongoDB摸了一遍,今天就分享一下。
(一)MongoDB业务场景介绍
一般在技术选型时,我们会把数据库的第一选择给Mysql,但是关系型数据库在某些场景下的效率和存储能力会不及非关系型数据库。比如:
对数据库有高并发操作或者对海量数据的高效存储和访问。但是MongoDB就可以很好的应对这些场景。
在技术选型时,如果遇到下面的情况:
- 数据量大
- 读写操作频繁
- 对事务等要求性不高
- 数据模型无法确定
- 需求中有大量的位置查询,文本查询
这个时候我们就可以选择使用MongoDB。
(二)MongoDB介绍
MongoDB是一个开源、高性能、无模式的文档型数据库,属于非关系型数据库的一种,MongoDB中的数据结构类似于JSON,它可以存储比较复杂的数据类型。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
(三)MongoDB基本增删改查
3.1 数据库操作
创建数据库:
use 数据库名
查看所有的数据库:
show databases
展示当前正在使用的数据库
db
删除数据库:
db.dropDatabase()
3.2 集合操作
mongodb中的集合类似于关系型数据库中的表,在关系型数据库中,需要先创建表结构才能往里面写入数据&