Docker安装MongoDB
拉取镜像:
docker pull mongo:6.0.2
创建容器:
docker run --name mongo -d -p 27017:27017 mongo:6.0.2
设置用户名和密码:
# 创建mongo容器后,进入容器
docker exec -it mongo bash
# 进入mongo shell
mongosh
# 进入admin数据库
use admin
# 创建用户名和密码
db.createUser({user:'zhangdapeng',pwd:'zhangdapeng520',roles:[{role:'root',db:'admin'}]})
校验用户名和密码:
# 认证登录db.auth('用户名','密码'),打印1则代表认证通过
db.auth('zhangdapeng','zhangdapeng520')
数据库管理
创建数据库:
use db;
查看所有数据库:
show dbs
插入一条数据,再查看所有数据库:
删除数据库:
db.dropDatabase()
show dbs
集合管理
集合相当于一张表,创建一张user集合:
use test
db.createCollection("user")
查看所有的集合:
show collections
创建固定集合 mycol,整个集合空间大小 6142800 B, 文档最大个数为 10000 个。
db.createCollection("mycol", {capped: true, autoIndexId: true, size: 6142800, max: 10000 })
show collections
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
删除集合:
新增文档
向user集合中新增张三:
查询所有的用户:
向user集合中新增李四:
向user集合中新增赵六和田七:
更新文档
update() 方法
update() 方法用于更新已存在的文档。语法格式如下:
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如
inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
实战案例
将张三修改为张三333:
更多实例
只更新第一条记录:
全部更新:
只添加第一条:
全部添加进去:
全部更新:
只更新第一条记录:
使用updateOne修改
使用updateMany修改
删除文档
实战案例
删除张三:
deleteOne删除
删除张三333:
deleteMany删除
删除李四:
删除年龄大于30的用户:
findOneAndDelete删除
删除赵六:
查询文档
条件运算符
逻辑运算符
and运算:
or运算:
实战案例
查询名字叫张三的:
查询年龄小于30的:
查看年龄小于30且大于25的:
查看名字叫张三或者名字叫李四的:
分页查询
实战案例
每页2条数据,查询第2页:
根据年龄排序,每页2条数据,查询第2页:在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
聚合语法
常用操作
这里我们介绍一下聚合框架中常用的几个操作:
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
:用于过滤数据,只输出符合条件的文档。match使用MongoDB的标准查询操作。
$limit:用来限制MongoDB聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group:将集合中的文档分组,可用于统计结果。
$sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。
实战案例
查询用户总数:
查询用户平均年龄:
领取专属 10元无门槛券
私享最新 技术干货