目录
一、mongoDB简介
1、mongoDB的介绍
mongoDB是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。它介于关系数据库和非关系数据库之间,被认为是非关系数据库当中功能最丰富,最像关系数据库的产品。
2、mongoDB的基本概念
(1)数据库:
数据库和传统的关系型数据库差不多的概念,每个数据库含有多个集合,每个数据库最后会作为文件储存至服务器中,另外还有一些特殊的数据库进行了保留如下:
admin:类似于root数据库,如果将用户添加至admin数据库将获取所有数据库的权限,其中一些比如查找所有数据库、关闭服务器的服务端命令只能从这里运行。
local:存储当前服务器所有本地集合的数据库,永远不可以复制。
config:主要是存储分片等信息
(2)集合(table):
在MongoDB中,数据是以文档的形式存储的,文档是一个键值对的集合,并且文档支持嵌套和数组。MongoDB中的一个文档相当于关系型数据库中的一行,多个文档构成了集合(collection),集合类似于关系型数据库中的表。
(3)文档 (行数据):
文档则相当于传统关系型数据的行数据,对于集合中的介绍,我们基本也了解到了集合的结构并非是非常固定的结构,但是对于其中还是要注意,文档不能出现相同名称的属性。
(4)主键:
主键是MongoDB比较特殊的存在,对于MongoDB是一定会有一个唯一性的Id,你可以使用一个确定的Id值,也可以不进行设置,由MongoDB生成一个唯一的ObjectId作为Id。
3. MongoDB的应用场景
(1)MongoDB可以解决传统数据库不好解决的三高问题 High performance - 对数据库高并发读写的需求 HugeStorage - 对海量数据的高效率存储和访问的需求 High Scalability && High Availability-
对数据库的高可扩展性和高可用性的需求
(2)MongoDB应用场景特点 数据量大; 读写操作频繁; 不需要复杂的事务和join操作;数据价值较低,对事务要求不高
(3)常见实际应用场景
①游戏场景
使用MongoDB存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。②物流场景
使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来。
③社交场景 使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。④大数据应用 使用云数据库MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。
二、数据库的操作
1、创建数据库
2、集合操作
1、创建集合
db.createCollection(COLLECTION NAME, [OPTIONS])
2、删除集合
db.COLLECTION NAME.drop()
2、文档操作
1、文档插入
使用insert方法
语法(单文档插入)
db.COLLECTION NAME.insert(document)
或者
db.COLLECTION NAME.save(document)
语法(多文档插入)
db.COLLECTION NAME.insertMany([document1,document2,...])
2、 删除文档
删除当前数据库中的其中一个文档
db.
COLLECTION NAME
.deleteOne({document
})
删除当前数据库中所有文档db.
COLLECTION NAME
.deleteMany({})
3、文档更新
db.集合名.update(条件, 新数据){修改器: {键:值}}
db.COLLECTION NAME.update(criteria,objNew,upsert, multi)
修改器 | 作用 |
$inc | 递增 |
$rename | 重命名列 |
$set | 修改列值 |
$unset | 删除列 |
4、文档简单查询
查询所有文档语法
db.COLLECTION NAME.find()
查询所有文档,以易读的方式展示
db.COLLECTION NAME.find().pretty()
3、语句操作符:
以下为MongoDB的基本语句操作符:
操作 | 格式 |
等于 | {<key>:<value>} |
小于 | {<key>:{$lt:<value>}} |
小于或等于 | {<key>:{$lte:<value>}} |
大于 | {<key>:{$gt:<value>}} |
大于或等于 | {<key>:{$gte:<value>}} |
1.4查询价格大于5的商品数据
1.5查询quantity为10且价格大于等于5的商品数据
4、逻辑操作符
以下为MongoDB的逻辑操作符:
常见管道操作符 | 相关说明 |
$group | 将集合中的文档进行分组,便于后续统计结果 |
$limit | 用于限制MongoDB聚合管道返回的文档数 |
$match | 用于过滤数据,只输出符合条件的文档 |
$sort | 将输入的文档先进行排序,再输出 |
$project | 用于修改输入文档的结构(增加、删除字段等)和名称 |
$skip | 在聚合管道中跳过指定数量的文档,并返回剩余的文档 |
1使用聚合aggregate:统计订单中所有商品的数量,即统计quantity的总
2使用聚合aggregate:通过产品类型来进行分组,然后在统计卖出的数量
3使用聚合aggregate:通过相同的产品类型来进行分组,然后查询相同产品类型卖出最多的订单详情。
4使用聚合aggregate:通过相同的产品类型来进行分组,统计各个产品数量,然后获取最大的数量。