首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年5月17日 星期六 11:08pm

MongoDB命令汇总

  • 25-04-24 04:21
  • 3746
  • 7801
blog.csdn.net

基础篇(能解决工作中80%的问题):

  1. MongoDB的概述、应用场景、下载方式、连接方式和发展历史等

  2. MongoDB数据类型、重要概念以及shell常用指令

  3. MongoDB文档的各种增加、更新、删除操作总结

  4. MongoDB各种查询操作总结

  5. MongoDB对列的各种操作总结

  6. MongoDB中的索引操作总结

进阶篇:

  1. MongoDB聚合操作总结

  2. MongoDB的导入导出、备份恢复总结

  3. MongoDB的用户管理总结

  4. MongoDB复制(副本集)总结

  5. MongoDB 分片总结

  6. MongoDB 遇见 spark(进行整合)

  7. MongoDB内部的存储原理

其它:

  1. python3操作MongoDB的各种案例

  2. MongoDB命令汇总

一. MongoDB命令帮助系统

看每个命令的详细用法,可以使用:db.listCommands()

数据库操作更详细的帮助命令:db.help()

对指定数据库的集合进行操作、管理和监控:db.mycoll.help()

二. 基本命令及实例

(一)基本命令

显示当前数据库服务器上的数据库:show dbs

切换到指定数据库pagedb的:use pagedb

显示数据库中所有的集合:show collections 或 show tables

查看数据库服务器的状态:db.serverStatus()

查询指定数据库统计信息:db.stats()

(二)常用DDL和DML

了解 DML、DDL、DCL、DQL专业名称

SQL语言共分为四大类:数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,数据查询语言DQL。

DML(data manipulation language 数据操纵语言): 它们是UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言

DDL(data definition language 数据(库)定义语言): 主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用

DCL(Data Control Language 数据控制语言): 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL

DQL(Data Query Language 数据查询语言):是数据库控制功能,包括 select 语句
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

创建数据库 mydatabase: use mydatabase; (只是切换,不是创建)

创建集合 student
db.createCollection("student",{capped:true,size:1000,max:100})

试一下,max等于3或者size等于1,会怎么样?

插入更新记录

表(student)

 {_id:1,classid:1,age:18,name:"little1",love:["football","swing","cmpgame"]}
 {_id:2,classid:2,age:19,name:"little2",love:["play"]}
 {_id:3,classid:2,age:20,name:"little3"}
 {_id:4,classid:1,age:21,name:"little4"}
 {_id:5,classid:1,age:22,name:"little5",opt:"woshisheia"}
 {_id:6,classid:2,age:23,name:"23little4"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

插入

 db.student.save({_id:1,classid:1,age:18,name:"little1",love:["football","swing","cmpgame"]})
 db.student.save({_id:2,classid:2,age:19,name:"little2",love:["play"]})
 db.student.save({_id:3,classid:2,age:20,name:"little3"})
 db.student.save({_id:4,classid:1,age:21,name:"little4"})
 db.student.save({_id:5,classid:1,age:22,name:"little5",opt:"woshisheia"})
 db.student.save({_id:6,classid:2,age:23,name:"23little4"})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

或者

db.student.insert([
 {_id:1,classid:1,age:18,name:"little1",love:["football","swing","cmpgame"]},
 {_id:2,classid:2,age:19,name:"little2",love:["play"]},
 {_id:3,classid:2,age:20,name:"little3"},
 {_id:4,classid:1,age:21,name:"little4"},
 {_id:5,classid:1,age:22,name:"little5",opt:"woshisheia"},
 {_id:6,classid:2,age:23,name:"23little4"},
 ])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

总结:集合一旦启动封顶模式,当max或者是size超出,新数据覆盖旧数据

查询一条记录/多条记录

查询出name为little1的数据: db.student.find({name:"little1"})

从第二条查寻,查出三条: db.student.find().skip(1).limit(3)

查询大于19小于等于21:db.student.find({age:{$gt:19,$lte:21}})

查询出age为奇数的数据(对2求余为1即为奇数):db.student.find({age:{$mod:[2,1]}})

查询出存在opt字段的数据:db.student.find({opt:{$exists:true}})

查询出不存在opt字段的数据:db.student.find({opt:{$exists:false}})

查询出name不为little2的数据:db.student.find({name:{$ne:"little2"}})

查询出age为16,18,19的数据:db.student.find({age:{$in:[16,18,19]}})

查询出age不为16,18,19的数据:db.student.find({age:{$nin:[16,18,19]}})

查询出love有三个的数据:db.student.find({love:{$size:3}})

查询出name不是以litt开头的数据:db.student.find({name:{$not:/^litt.*/}})

查询age=“”>20的数据:db.student.find({age:{$gt:20}})

按age升序:db.student.find().sort({age:1})

按age降序:db.student.find().sort({age:-1})

查询数据条数:db.student.find().count()

删除记录

删除age为20的数据:db.student.remove({age:20});

创建索引

创建索引 age:db.student.ensureIndex({"age":1})

查询索引:db.student.getIndexes()

删除索引:db.student.dropIndex({"age" : 1})

统计集合记录数:db.student.count()

删除集合 student:db.student.drop()

删除数据库 mydatabase:db.dropDatabase()

(三)安全管理

以安全认证模式启动

添加用户

安全认证

(四)数据备份、恢复与迁移管理

备份全部数据库

备份指定数据库

备份一个数据库中的某个集合

恢复全部数据库

恢复某个数据库的数据

恢复某个数据库的某个集合的数据

向MongoDB导入数据

从MongoDB导出数据

(五)远程连接管理

基于mongo实现远程连接
mongo —host 192.168.17.129 —port 27017

(六)聚合
计算各班级平均年龄

db.student.aggregate([
 {
    $group: {
      _id: "$classid",
      avg_age: {
        $avg: "$age"
      }
    }
  }
])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

计算全班级平均年龄

db.student.aggregate([
 {
    $group: {
      _id: null,
      avg_age: {
        $sum: "$age"
      }
    }
  }
])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
(七) MapReduce

计算各班级平均年龄

分组统计(MapReduce):

var mapfun = function(){emit(this.classid,this.age);}
var reducefun = function(key, values){
    var total=0; 
    for(var i=0;i<values.length;i++){
        total += values[i];
    }
    return { classid: key, age_avg: total/values.length };
}
db.student.mapReduce(
      mapfun,
      reducefun,
      { out: "student_res" }
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

查询统计结果(分班级统计人数):db.student_res.find()

各班级统计人数
分组统计(MapReduce):

var mapfun = function(){emit(this.classid,1);}
var reducefun = function(key, values){
     return Array.sum(values);
}
db.student.mapReduce(
      mapfun,
      reducefun,
      { out: "student_sta" }
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

查询统计结果(分班级统计人数):db.student_sta.find();

数据知道的成长之路
微信公众号
成长进阶、技术分享、资源获取
注:本文转载自blog.csdn.net的数据知道的文章"https://cuiyonghua.blog.csdn.net/article/details/125627460"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top