一 、 mongoDB简介:MongoDB 是一种高性能、开源的 NoSQL 数据库系统,由 C++ 编写而成。它以其独特的数据存储和查询机制在现代应用开发中获得了广泛应用,尤其是适用于需要处理大量非结构化或半结构化数据的场景。MongoDB 旨在为 Web 应用程序提供一个可扩展的高性能数据存储解决方案,尤其适合大数据量、高并发访问以及数据结构不固定的应用场景
二、应用场景
1、游戏场景:使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
2、物流场景:使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
3、社交场景:使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
4、物联网场景:使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
5、视频直播:使用 MongoDB 存储用户信息、礼物信息等
。
三、基础操作
①创建集合
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
options 可以是如下参数:
②创建数据库
③增加 数据库
步骤一:连接数据库
1、使用mongo连接到本地服务器 打开一个命令窗口:
步骤二:创建数据库
使用 mongo 连接到服务器后,切换到指定的数据库:
use + 数据库名
若不存在会创建
1、创建一个数据库(这里用test创建)
2、用insert插入数据(单个数据)用insert Many插入多条数据
3、用find查询是否成功插入
步骤三:查询
#查询数据库
查询类型:操作 操作符 查询格式
小于 $lt {age:{$lt:18}} // where age<18
小于等于 $lte {age:{$lte:18}} // where age<=18
大于 $gt {age:{$gt:18}} // where age>18
大于等于 $gte {age:{$gte:18}} // where age>=18
不等于 $ne {age:{$ne:18}} // where age<>18
1、逻辑查询
① and查询
db.user.find({[ ]})
或者缺省$and
db.user.find({[ ]})
② or查询
db.user.find
③ 混合查询
db.user.find
④ in 和nin 查询
db.user.find({[ ]})
步骤四:更新表
Insert一条记录
db.集合名.insert(document)
或
db.集合名.save(document)
其中
save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用db.collection.insertOne() 或db.collection.replaceOne() 来代替。
insert(): 若插入的数据主键已经存在,则会抛
org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据
步骤五:其他聚合操作
步骤六:删除操作
1、删除集合
使用db.user.drop();就可以删除数据
删除数据:用dropData就可以删除数据里面的全部数据,如果成功删除选定集合,则 drop() 方法返回true,否则返回 false。
步骤六:索引
在声明索引时,还可以通过一些参数化选项来为索引赋予一定的特性,包括:
- unique=true,表示一个唯一性索引
- expireAfterSeconds=3600,表示这是一个TTL索引,并且数据将在1小时后老化
- sparse=true,表示稀疏的索引,仅索引非空(non-null)字段的文档
- partialFilterExpression: { rating: { $gt: 5 },条件式索引,即满足计算条件的文档才进行索引。
1. 创建索引
db.collection.createIndex
2. 查看索引
db.user.getIndexes()
3. 查看索引大小
db.user.totalIndexSize()
4. 删除索引
db.user.dropIndex(索引名);
db.user.dropIndexes();//删除集合所有索引
总结:
本文主要介绍了MongoDB的常用的基础操作,操作方式主要使用的是json类型的条件语句,对json编写的要求较高,其操作和MySQL的操作基本相同,除了MongoDB没有join查询以外其他查询都支持,后续会给大家分享MongoDB的安装和主从复制等内容。