0
点赞
收藏
分享

微信扫一扫

MongoDB 常用命令

自由情感小屋 2022-02-13 阅读 83

目录

1. 查看版本号

2. 查看所有数据库

3. 查看当前数据库目录下的所有表

4. 选择数据库

5. 创建表

6. 删除表

7.插入数据

8. 删除表数据

9. 查询表一条数据

10. 查询表所有数据

11.  指定位置查询表指定数量数据

12.查询表 条件显示数据

 13. 条件查询表数据

14. 模糊/正则查询表数据

15. 运算符查询表数据

16.  查询表数据并排序显示

17. 修改/删除表指定属性数据

(1). $set修改指定属性

(2). $unset删除指定属性

(3). $inc自增指定属性

(4). $set $inc $unset组合使用 自增删除和修改

(5). $push给指定属性数组添加成员,$each一次添加多成员

(6). $pop给指定属性数组尾部弹出一个成员

(6). $pull给指定属性数组删除指定成员

18. 聚合

 (1). $sum运用

 (2). $max运用

 (3). $avg运用

 (3). $unwind运用

 (4). $project运用

(5). $concat运用


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"]}
       }
   }
])

举报

相关推荐

0 条评论