目录
(4). $set $inc $unset组合使用 自增删除和修改
(5). $push给指定属性数组添加成员,$each一次添加多成员
1. 查看版本号
db.version()
2. 查看所有数据库
show dbs
3. 查看当前数据库目录下的所有表
show collections
4. 选择数据库
(1). 这里我选择的是UserName数据库
(2). 数据不存在并不会报错,它会记录到内存,如果你使用增加数据操作,这个数据库就会被创建出来
(3). 如果执行别的命令前,你没有进行增加数据操作,那这个内存就会被释放掉
use UserName
5. 创建表
createCollection参数 | 默认值 |
表名 | 无 |
db.createCollection("students")
6. 删除表
db.students.drop()
7.插入数据
insert参数 | 默认值 |
JOSN数组或单个JSON | 无 |
如果这个表不存则会自动创建
db.students.insert({name:"张三",age:18,gender:"男"})
db.students.insert([{name:"王五",age:15,gender:"男"},{name:"李四",age:19,gender:"男"}])
8. 删除表数据
删除一条数据并返回对象 | findOneAndDelete参数 | 默认值 |
1.删除条件 | 无 |
只能删除一条数据 | deleteOne参数 | 默认值 |
1.删除条件 | 无 |
删除多条数据 | deleteMany参数 | 默认值 |
1.删除条件 | 无 |
remove参数 | 默认值 |
1.删除条件 | 无 |
2.是否只删除一个 | false |
为{}表示清空表里的全部数据
db.students.remove({})
删除表内全部name为张三的数据
db.students.remove({"name":"张三"})
删除指定id数据
db.students.remove({_id:ObjectId("6208af4dd5f0203f271bb2fa")})
9. 查询表一条数据
findOne参数 | 默认值 |
查询条件 | 无 |
db.students.findOne()
10. 查询表所有数据
find参数 | 默认值 |
查询条件 | 无 |
db.students.find()
11. 指定位置查询表指定数量数据
(1). db.students.find().skip(2)
(2). dskip(2)里放开始的位置,也就是从第三条数据开始查询
(3).limit(5)取出多少条数据,这里就是取出五条数据
db.students.find().skip(2)
db.students.find().skip(2).limit(5)
12.查询表 条件显示数据
(1). db.表名.find()
(2). 第一个查询条件{},空表示显示所有数据
(3). 第二个显示条件{age:1},0不显示,1显示,逗号分隔条件
(4). 这条命令就是,全部数据只显示age数据,如果显示条件为0则只会显示除了age数据外的全部数据
db.students.find({},{age:1})
13. 条件查询表数据
(1). db.表名.find()
(2). 第一个查询条件{},空表示显示所有数据,逗号分隔开
(3). 查询name为张三的全部数据
(4). 查询name为张三,age为18的全部数据
db.students.find({name:"张三"})
db.students.find({name:"张三",age:18})
14. 模糊/正则查询表数据
(1). db.表名.find() 或者 db.表名.findOne()这个只能查询一条
(2). 查询name里面带有张的数据,/正则表达式/
db.students.find({name:/张/})
db.students.find({name:/^[a-z]{4}$/})
15. 运算符查询表数据
(1). db.表名.find() 或者 db.表名.findOne()这个只能查询一条
(2). 第一个查询条件{},空表示显示所有数据,逗号分隔开
(3). 条件里写Json,Json里写运算符,($and和$or)例外,下面查看案例
运算符 | |
并且 | $and |
或者 | $or |
大于 | $gt |
小于 | $lt |
不等于 | $ne |
大于等于 | $gte |
小于等于 | $lte |
包含条件 | $in |
不包含条件 | $nin |
查询age等于15并且gender等于男的,以下两种实现方式都是一样的
db.students.find({$and:[{age:15,gender:"男"}]})
db.students.find({$and:[{age:15},{gender:"男"}]})
查询age等于15或者gender等于男的,多个Json
db.students.find({$or:[{age:15},{gender:"男"}]})
查询大于20的
db.students.find({age:{$gt:20}})
查询大于等于20的
db.students.find({age:{$gte:20}})
查询小于等20的
db.students.find({age:{$lt:20}})
查询小于等于20的
db.students.find({age:{$lte:20}})
查询不等于20的
db.students.find({age:{$ne:20}})
查询包含20,19,15的
db.students.find({age:{$in:[20,19,15]}})
查询不包含20,19,15的
db.students.find({age:{$in:[20,19,15]}})
16. 查询表数据并排序显示
sort参数 | 值 | |
排序参数 | 升序 | 1 |
降序 | -1 |
模糊查找带有张字的数据进行升序排序
db.students.find({name:/张/}).sort({age:1})
模糊查找带有张字的数据进行多个条件排序,多重排序!
db.students.find({name:/张/}).sort({age:1,height:-1})
17. 修改/删除表指定属性数据
update参数 | 参数格式 | 默认值 |
1.筛选条件 | Json格式 | 无 |
2.修改的属性 | Json格式 | 无 |
3.不在是否创建 | 布尔值 | false |
4.是否批量修改 | 布尔值 | false |
操作符 | 作用 |
$set | 修改 |
$unset | 删除 |
$inc | 自增 |
$push | 数组添加成员 |
$each | 配合$push添加多个成员 |
$pop | 弹出尾部成员 |
$pull | 删除指定成员 |
(1). $set修改指定属性
这里是把name为张三的age属性改为18,不会删除其他属性
db.students.update({name:"张三"},{$set:{age:20}})
这里是把全部小于等于18的age属性改为18,不会删除其他属性
db.students.update({age:{$lte:18}},{$set:{age:19}},false,true)
(2). $unset删除指定属性
这里是把name为张三的age属性删除掉,并且不删除其他属性
db.students.update({name:"张三"},{$unset:{age:19}})
注意加操作符$unset,不然会清空他属性
这里是把name为张三的age属性改为18,并且会把其他属性全部删除
db.students.update({name:"张三"},{age:20})
(3). $inc自增指定属性
操作符 $inc 使age在原来的基础上自增2
db.students.update({name:"张三"},{$inc:{age:2}})
(4). $set $inc $unset组合使用 自增删除和修改
$set $inc $unset 组合使用,age自增2,gender修改为女,把name属性删除了
db.students.update({name:"张三"},{$inc:{age:2},$set:{gender:"女"},$unset:{name:""}})
(5). $push给指定属性数组添加成员,$each一次添加多成员
操作符 $push likes数组添加了新成员
db.students.update({name:"张三"},{$push:{likes:"睡觉"}})
加上$each,就可以达到一次添加多个成员
db.students.update({name:"赵六六"},{$push:{likes:{$each:["睡觉","打篮球","跑步"]}}})
(6). $pop给指定属性数组尾部弹出一个成员
db.students.update({name:"张三"},{$pop:{likes:1}})
(6). $pull给指定属性数组删除指定成员
db.students.update({name:"张三"},{$pull:{likes:"睡觉"}})
18. 聚合
aggregate操作符 | 作用 |
$group | 进行分布查询操作,(诸如统计平均值,求和等) |
$match | 通过指定属性来 匹配/过滤 |
$unwind | 拆分数组,把每个数组形成新的JSON数据 |
$project | (1只显示/0为不显示)某个属性,修改显示名 |
_id | 分组属性,可以为 null |
$sum | 类似Js里reduce()函数的累加合 |
$max | 求最大值 |
$avg | 求平均值 |
$push | 添加到数组 |
$concat | 多属性拼接字符串 |
运算符 | |
并且 | $and |
或者 | $or |
大于 | $gt |
小于 | $lt |
不等于 | $ne |
大于等于 | $gte |
小于等于 | $lte |
包含条件 | $in |
不包含条件 | $nin |
(1). $sum运用
这样就相当于我把每条数据里的score属性的值相加,得到总数
db.students.aggregate([
{
$group: {
_id: null,
count: {
$sum: "$score"
}
}}
])
用cname属性进行分组,并计算每个分组的score属性总值
db.students.aggregate([
{
$group: {
_id: "$cname",
count: {
$sum: "$score"
}
}}
])
group用cname属性的进行分组并且
math来匹配cname属性等于(一年级),并计算每个分组的score属性总值
db.students.aggregate([
{$match: {cname:"一年级"}},
{
$group: {
_id: "$cname",
count: {
$sum: "$score"
}
}}
])
如果match放后面需要把条件改为_id
group用cname属性分组并计算每个分组的score属性总值,用math来过滤低于等于300的数据
因为上面把累加的结果都给了count所有,match也需要写count用于过滤
db.students.aggregate([
{$group: {
_id: "$cname",
count: {
$sum: "$score"
}
}},{$match: {count:{$gte:300}}},
])
(2). $max运用
求score属性里最高的数值
db.students.aggregate([
{$group: {
_id:null,
count: {
$max: "$score"
}
}}
])
先用cname属性进行分组,在用max来求每组的score属性最高数值
db.students.aggregate([
{$group: {
_id: "$cname",
count: {
$max: "$score"
}
}}
])
(3). $avg运用
先用cname属性进行分组,在用avg来求每组的score属性的平均值
db.students.aggregate([
{$group: {
_id:"$cname",
count: {
$avg: "$score"
}
}}
])
(4). 先用cname属性进行分组,在用push把score属性的值添加到数组
db.students.aggregate([
{$group: {
_id:"$cname",
count: {
$push: "$score"
}
}}
])
(3). $unwind运用
先给表插入一条带数组的数据
db.students.insert({name:"张三",age:19,gender:"女",cname:"三年级",interset:["吃饭","睡觉","跑步"]})
先用match过滤,在用$unwind为 $interset拆分为新数据
db.students.aggregate([
{
$match: {
name:"张三"
}
},
{
$unwind: "$interset"
}
])
(4). $project运用
把_id属性不显示,1为只显示该属性,0为不显示该属性
db.students.aggregate([
{
$match: {
name:"张三"
}
},
{
$unwind: "$interset"
},{
$project: {
_id:0
}
}
])
这里就是只显示id和name,不同的是我把name显示改成了username
db.students.aggregate([
{
$match: {
name:"张三"
}
},
{
$unwind: "$interset"
},{
$project: {
_id:1,
username:"$name"
}
}
])
(5). $concat运用
$concat把数组里的属性和字符串进行拼接
db.students.aggregate([
{
$match: {
name:"张三"
}
},
{
$unwind: "$interset"
},{
$project: {
_id:1,
info:{$concat:["$name","----","$cname"]}
}
}
])