IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MongoDB 常用命令 -> 正文阅读

[大数据]MongoDB 常用命令

目录

1. 查看版本号

2. 查看所有数据库

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

4. 选择数据库

5. 创建表

6. 删除表

7.插入数据

8. 删除表数据

9.查询性能分析

10. 查询表一条数据

11. 查询表所有数据

12. 查询表所有数据总数量

13.? 指定位置查询表指定数量数据

14.查询表 条件显示数据

?15. 条件查询表数据

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

17.创建索引

(1). 正常索引创建

(2).复合索引创建

(3). 稀疏索引创建

(4). 唯一索引创建

(5). 超时索引创建

18.获取表索引

19.删除索引

20. 运算符查询表数据

21.??查询表数据并排序显示

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

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

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

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

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

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

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

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

23. 聚合

?(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.查询性能分析

db.students.find().explain("executionStats")

10. 查询表一条数据

findOne参数默认值
查询条件
db.students.findOne()

11. 查询表所有数据

find参数默认值
查询条件
db.students.find()

12. 查询表所有数据总数量

db.students.count()

13.? 指定位置查询表指定数量数据

(1). db.students.find().skip(2)

(2).?dskip(2)里放开始的位置,也就是从第三条数据开始查询

(3).limit(5)取出多少条数据,这里就是取出五条数据

db.students.find().skip(2)
db.students.find().skip(2).limit(5)

14.查询表 条件显示数据

(1). db.表名.find()

(2). 第一个查询条件{},空表示显示所有数据

(3). 第二个显示条件{age:1},0不显示,1显示,逗号分隔条件

(4). 这条命令就是,全部数据只显示age数据,如果显示条件为0则只会显示除了age数据外的全部数据

db.students.find({},{age:1})

?15. 条件查询表数据

(1). db.表名.find()?

(2). 第一个查询条件{},空表示显示所有数据,逗号分隔开

(3). 查询name为张三的全部数据

(4). 查询name为张三,age为18的全部数据

db.students.find({name:"张三"})
 db.students.find({name:"张三",age:18})

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

(1). db.表名.find()?或者 db.表名.findOne()这个只能查询一条

(2). 查询name里面带有张的数据,/正则表达式/

db.students.find({name:/张/})
db.students.find({name:/^[a-z]{4}$/})

17.创建索引

createIndex参数
后台创建/创建正常索引使用--backgroundBoolean
稀疏索引--spaseBoolean
唯一索引--uniqueBoolean
超时索引--expireAfterSecondsNumber
创建属性值升序1
降序-1

(1). 正常索引创建

db.students.createIndex({name:1},{background:true})

(2).复合索引创建

这样创建的符合索引,单独查询name或者name和age都可以触发索引扫描,单独的age不行!

db.students.createIndex({name:1,age:1},{background:true})

(3). 稀疏索引创建

这样创建的稀疏索引可以忽略此字段

db.students.createIndex({name:1},{spase:true})

插入一条数据,忽略了name值?

db.students.insert({age:18,gender:"男"})

(4). 唯一索引创建

db.students.createIndex({name:1},{unique:true})

因为name值是唯一索引, 插入的两条数据name值重复了,所有最终值插入了一条

db.students.insert({name:"张三",age:18,gender:"男"})
db.students.insert({name:"张三",age:20,gender:"女"})

(5). 超时索引创建

db.students.createIndex({createAt:1},{expireAfterSeconds:20})

插入一条数据带createAt字段,如果20秒无访问就会删除,如果访问20秒重新计时

db.students.insert({name:"张三",age:18,gender:"男",createAt:new Date()})

18.获取表索引

db.students.getIndexes()

19.删除索引

dropIndex参数
要删除的索引name值String

这里把索引name属性值为"name_1"的索引删除了

db.students.dropIndex("name_1")

20. 运算符查询表数据

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

21.??查询表数据并排序显示

sort参数
排序参数升序1
降序-1

模糊查找带有张字的数据进行升序排序

db.students.find({name:/张/}).sort({age:1})

模糊查找带有张字的数据进行多个条件排序,多重排序!

db.students.find({name:/张/}).sort({age:1,height:-1})

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

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:"睡觉"}})

23. 聚合

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 21:14:25  更:2022-02-14 21:15:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:59:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码