一、window安装Mongodb
参考:window 安装mongodb_宠乖仪的博客-CSDN博客
二、linux安装Mongodb
https://blog.csdn.net/qq_53582111/article/details/121049245
三、mongodb图形界面
robo3t官网:Robo 3T | Free, open-source MongoDB GUI (formerly Robomongo)
四、mongodb增删改查
1、查看数据库
show dbs
2、切换数据库/创建数据库
use 数据库名
3、删除数据库
user 需要删除的数据库名
db.dropDatabase()
4、创建集合
db.createCollection(集合名,{capped:true,size:num})
# capped: 默认值为false表示不设置上限,值为true表示设置上限
# size: 当capped的值为true,表示上限大小,当文档达到上限时,会将之前的数据覆盖,单位为字节
5、删除集合
db.集合.drop()
6、查看集合
show tables # 第一种
show collections # 第二种
7、数据增加
db.集合名.insert() # 第一种
db.集合名.save() # 第二种,注意,如果原来的对象不存在,那他们都可以向collection⾥插
⼊数据,如果已经存在,save会调⽤update更新⾥⾯的记录
# 插入一条数据
db.集合名.insert({k1:v1,k2:v2,....})
# 插入多条数据
db.集合名.insert([{k1:v1,k2:v2},{k3:v3,k4:v4}])
8、修改数据
db.集合名.updata(
<query>, # 查询条件
<update>, # 更新操作符
{multi:<boolean>} # 可选,默认false,表示只更新找到的第一条数据,反之,更新全部数
据
)
# 只更新找到的第⼀条,并且会修改结构,其他字段会消失
db.person.update({name:"aa"},{age:21})
# 只更新数据,为不更新⽂档结构
db.person.update({name:"aa"},{$set:{age:123,socre:98})
# 更新所有找到匹配的数据
db.person.update({name:"aa"},{$set:{age:123}}, {multi: true})
9、删除数据库
db.集合名.delete_one()
db.集合名。remove({k1:v1},{justOne:true}) # justOne指删除一条数据
10、查询数据
db.集合名.find({条件文档}) # 查找多个
db.集合名.find_one({条件文档}) # 查找一个
查看详细信息
db.集合名.find().explain('executionStats') # 显示查询操作的详
细信息
10.1 运算符
语法 | 操作 | 格式 |
$eq | 等于 | {:} |
$lte | 小于或等于 | {<key>:{$lte:}} |
$gt | ⼤于 | {<key>:{$gt:}} |
$gte | ⼤于或等于 | {<key>:{$gte:}} |
$ne | 不等于 | {<key>:{$ne:}} |
$or | 或 | {$or:[{},{}]} |
$in | 在范围内 | {<key>:{$in:[val1,val2]}} |
$lt | ⼩于 | {<key>:{$lt:}} |
$nin | 不在范围内 | {<key>:{$nin:[val1,val2]}} |
10.2 模糊匹配
使⽤//或$regex编写正则表达式
db.集合名.find({name:/^xx/})
db.集合名.find({name:{$regex:'^xx'}}})
10.3 自定义查询
使⽤$where后⾯写⼀个函数,返回满⾜条件的数据
db.集合名.find({$where:function(){return this.k1>v1}})
10.4 limit ⽤于读取指定数量的⽂档
db.集合名称.find().limit(NUMBER)
10.5 skip 用于跳过指定数量的文档
db.集合名称.find().skip(number)
10.6 sort 用于对结果集进行排序
db.集合名称.find().sort({字段:1,...})
# 参数1为升序排列
# 参数-1为降序排列
10.7 count 用于统计结果集中文档条数
db.集合名称.find({条件}).count()
db.集合名称.count({条件})
10.8 exists 判断是否有某个字段
db.集合名称.find({'field':{$exists:true}})
10.9 distinct 去重
db.集合名称.distinct(field)
db.集合名称.distinct(field,{过滤条件 })
11 聚合函数
语法:
db.集合名称.aggregate([{管道:{表达式}}]) # 使用多个管道命令
db.集合名称.aggregate({管道:{表达式}}) # 使用1个管道命令
11.1 常⽤表达式
11.2 管道命令之$group ⽤来将集合中的⽂档分组,可⽤于统计结果
db.集合名.aggregate(
{$group:{
_id:'$v1',
k2:{$sum:1}
}}
)
11.3 管道命令之 $match
$match ⽤于进⾏数据的过滤,是在能够在聚合操作中使⽤的命令,和 find 区别在于
$match 操作可以把结果交给下⼀个管道处理,⽽ find 不⾏
db.集合名.aggregate([
{$match:{age:{$gt:20}}}
])
11.4 管道命令之 $project ⽤于修改⽂档的输⼊输出结构,例如重命名,增加,删除字段
例如
11.5 管道命令之 $sort ⽤于将输⼊的⽂档排序后输出
11.6 管道命令之 $skip 和 $limit
1、$limit 限制返回数据的条数
2、$skip 跳过指定的⽂档数,并返回剩下的⽂档数
3、同时使⽤时先使⽤skip在使⽤limit
12 Mongodb的索引操作
12.1 使用索引的好处
1. 加快查询速度
2. 进行数据的去重
12.2 mongodb 创建索引的方法
db.集合名.ensureIndex({字段名:1}) ,1表示升序, -1表示降序
12.3 索引的查看方式
db.集合名.getIndexes()
12.4 删除索引
db.集合名.dropIndex({'索引字段名称':1})
12.5 创建唯一索引
db.集合名.ensureIndex({"字段名":1}, {"unique":true})
12.6 创建复合索引
db.集合名.ensureIndex({字段1:1,字段2:1})