目录

一、基本命令:

二、常用命令:

1、基本查询:

2、按照条件查询

3、按特定类型查询

4、统计查询

5、分页查询

6、聚合管道操作

7、分组

8、索引

9、设置权限用户的步骤--简单

10、设置权限用户的步骤--复杂


一、基本命令:

  • 查看当前数据库:
db
  • 创建并进入数据库:
use jxx
  • 查看所有数据库:
show dbs //(空库不显示)
  • 删除当前数据库,需要先进入当前数据库:
db.dropDatabase()
  • 创建集合(集合与表的区别:集合无序、不可重复,列表有序、可重复):
db.createCollection('cs')
  • 查看集合:
show collections
  • 插入文档&&隐式创建集合的一种方式:
db.cs.insert({'name':'swk','age':18})
  • 删除集合:
db.cs.drop()
  • 多文档插入:
db.cs.insertMany([{'name':'ts','age':18},{'name':'zbj','age':18},{'name':'shs','age':18}])
  • 查找(查看集合内容):
db.cs.find()
  • 写入多条数据:
db.cs.insertMany([{ }])
  • 修改一个数据:
db.cs.update({'id':1},{$set:{'id':4}})
  • 更新 一条:( 第一个是原本数据,第二个是要修改为的内容)
db.comment.update({"content":"喝水是生命体通过口腔摄入水分的方式,人体每天通过口腔摄入的液体大约有2升"},{$set:{"content":"喝水增加了尿量,能使有害物质及时排出体内"}})
  • 更新多条:
db.comment.update({"content":"喝水是生命体通过口腔摄入水分的方式,人体每天通过口腔摄入的液体大约有2升"},{$set:{"content":"喝水增加了尿量,能使有害物质及时排出体内"}},false,true)

注:第3个参数表示如果不存在,是否新创建,第4个参数表示是否更新多条数据。

  • 删除:
db.comment.remove({"nickname":"爱德华"})   
  • 删除全部:
db.comment.remove({})

二、常用命令:

1、基本查询:

  • 易读方式的查询:
db.comment.find().pretty()
  • 排序查询-降序:
db.comment.find().sort({userid:-1}).pretty()
  • 排序查询-升序:
db.comment.find().sort({userid:1}).pretty()   
  • 排序查询-多个条件:
db.cjd.find().sort({userid:-1,likenum:1}).pretty()

2、按照条件查询

  • 按条件查询--与:
db.cjd.find({$and:[{"userid":"1005", "nickname":"罗密欧"}]}).pretty()
  • 按条件查询--或:
db.cjd.find({$or:[{"userid":"1002"},{"userid":"1003"}]}).pretty()
  • 按条件查询--大于(greater than):
db.comment.find({"userid":{$gt:"1005"}}).pretty()
  • 按条件查询--小于(less than)
db.comment.find({"userid":{$lt:"1004"}}).pretty()
  • 按条件查询--大于等于(greater than or equal)
db.comment.find({"userid":{$gte:"1005"}}).pretty()
  • 按条件查询--小于等于(less than or equal)
db.comment.find({"userid":{$lte:"1003"}}).pretty()
  • 按条件查询--不等于(not equal)
db.comment.find({"userid":{$ne:"1005"}}).pretty()
  • 按条件查询--包含(in)
db.comment.find({"_id":{$in:["1","3"]}}).pretty()
  • 按条件查询--不包含(not in)
db.comment.find({"_id":{$nin:["1","3","5"]}}).pretty()

3、按特定类型查询

  • 使用Null类型查询
db.comment.find({"state":null}).pretty()
  • 使用正则表达式查询
db.comment.find({"content":/^专家/}).pretty()
  • 使用精确查询
db.comment.find({'name':'zhu'})
db.comment.find({"phone":{"homePhone":"62771541","mobilePhone":"13262984142"}}).pretty()
  • 使用点查询
db.comment.find({"phone.homePhone":"82174911"}).pretty()

4、统计查询

  • 统计所有
db.comment.count()
  • 按照条件统计
db.comment.count({userid:"1003"})

5、分页查询

示例:limit()表示读取指定数量的数据,skip()表示跳过指定数量的数据。

  • 读取三条文档

    db.comment.find().limit(3)
  • 跳过三条后读取
db.comment.find().skip(3)
  • 跳过三条后,查询2条
db.comment.find().limit(2).skip(3)   //limit是输入要查询的数量,skip是跳过的数量

6、聚合管道操作

  • 使用$group将文档进行分组
db.comment.aggregate([{$group:{"_id":"$userid"}}]).pretty()
  • 使用$limit指定文档的读取数量
db.comment.aggregate({$limit:3}).pretty()
  • 使用$match查询符合匹配条件的数据
db.comment.aggregate([{$match:{"nickname":"罗密欧"}}]).pretty()
  • 使用$sort排序

    db.comment.aggregate([{$sort:{"age":-1}}]).pretty()
  • 使用$project过滤掉指定字段后展示文档,
db.comment.aggregate([{$project:{"_id":0}}]).pretty()
  • $skip跳过指定条数后展示文档
db.comment.aggregate({$skip:4}).pretty()

7、分组

  • 创建product集合
db.product.insertMany([{"_id":"1","name":"iPhone 8","price":3000,"type":"电子通讯"},{"_id":"2","name":"adidasneo","price":700,"type":"服装"},{"_id":"3","name":"nike air max 90","price":760,"type":"服装"},{"_id":"4","name":"HuaWei mate30","price":5000,"type":"电子通讯"},{"_id":"5","name":"vivo x27","price":2000,"type":"电子通讯"}])
  • 按类型type进行分组,并计算各个分组的价格price总和。
db.product.aggregate([{$group:{"_id":"$type","价格":{$sum:"$price"}}}]).pretty()
db.product.aggregate([{$group:{"_id":"$class","随便写":{$sum:"$total"}}}]).pretty()
  • 按类型type进行分组,并计算各个分组的价格price平均值
db.product.aggregate([{$group:{"_id":"$type","price":{$avg:"$price"}}}]).pretty()
  • 按类型type进行分组,并找出各个分组的价格price最小值
db.product.aggregate([{$group:{"_id":"$type","price":{$avg:"$price"}}}]).pretty()
  • 按类型type进行分组,并找出各个分组的价格price最大值
db.product.aggregate([{$group:{"_id":"$type","price":{$max:"$price"}}}]).pretty()
  • 按类型type进行分组,并将各个分组的产品$name字段插入到一个数组tags
db.product.aggregate([{$group:{"_id":"$type","tags":{$push:"$name"}}}]).pretty()
  • 按类型type进行分组,并获取各个分组中$name字段的第一个产品
db.product.aggregate([{$group:{"_id":"$type","product":{$first:"$name"}}}]).pretty()
  • 按类型type进行分组,并获取各个分组中$name字段的最后一个产品
db.product.aggregate([{$group:{"_id":"$type","product":{$last:"$name"}}}]).pretty()

8、索引

  • 查看索引
db.comment.getIndexes()
  • 创建升序索引
db.comment.createIndex({userid:1})
  • 创建复合索引
db.comment.createIndex({userid:1,nickname:-1})
  • 移除索引
db.comment.dropIndex({userid:1})
  • 查看索引是否生效
db.comment.find({userid:"1003"}).explain()

备注:"stage" : "FETCH" 是基于索引的扫描,"stage" : "COLLSCAN", 表示全集合扫描


9、设置权限用户的步骤--简单

  • 1.进入某个数据库比如:
use jxx
  • 2.创建用户
db.createUser({user:"Admin",pwd:passwordPrompt(),roles:[{role:"readWrite",db:"jxx"}]})
  • 3.服务器登陆。重新启动服务器,打开命令行,采用以下命令进入权限模式
mongod --dbpath C:\mongodb\data\db --logpath C:\mongodb\data\logs\mongo.log --logappend --auth
  • 4.用户端登陆。注意必须先进入对应数据库,然后在进行账号登陆。
use jxx
  • 5.登陆
db.auth('Admin','123456')
  • 6.进行数据的读写

10、设置权限用户的步骤--复杂

  • 1.进入某个数据库比如:
use admin
  • 2.创建管理员
db.createUser({user:"itcastAdmin",pwd:passwordPrompt(),roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
  • 3.创建用户
db.createUser({user:"itcastUser",pwd:passwordPrompt(),roles:[{role:"read",db:"admin"}]})
  • 4修改用户权限
db.updateUser("itcastUser",{roles:[{role:"read",db:"admin"},{role:"readAnyDatabase",db:"admin"}]})
  • 5.重新启动服务器,打开命令行,采用以下命令进入权限模式
mongod --dbpath C:\mongodb\data\db --logpath C:\mongodb\data\logs\mongo.log --logappend --auth
  • 6.注意必须先进入对应数据库,然后在进行账号登陆。
use admin
  • 7.登陆
db.auth('itcastUser','123456')
  • 8.进行数据的读写

进阶版--Mongodb命令汇总相关推荐

  1. MongoDB命令汇总

    基础篇(能解决工作中80%的问题): MongoDB的概述.应用场景.下载方式.连接方式和发展历史等 MongoDB数据类型.重要概念以及shell常用指令 MongoDB文档的各种增加.更新.删除操 ...

  2. MongoDB 常用命令汇总

    MongoDB 常用命令汇总 mongodb数据库结构与传统关系型数据库对比 MongoDB 创建数据库 创建/切换数据库 查看当前数据库名称 查看所有数据库 MongoDB 删除数据库 删除集合 M ...

  3. Linux| Linux常用命令汇总(旧版)

    *********************************最常用命令********************************************** 文件查找:     find ...

  4. hypermesh抽中面后的处理_总结|Hypermesh中几何清理命令汇总

    原标题:总结|Hypermesh中几何清理命令汇总 Hypermesh中几何清理命令汇总 在有限元分析中,由于三维模型中具有大量的圆角.螺栓孔.交叉面.微小曲面等特征,给前处理带来了极大的麻烦,因此前 ...

  5. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录

    基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...

  6. Matlab命令汇总

    Matlab命令汇总 都是从网上转的,贴到一起方便查,使用的时候直接Ctrl+F搜索. 一.常用对象操作:除了一般windows窗口的常用功能键外. 1.!dir 可以查看当前工作目录的文件.   ! ...

  7. 使用tar进行磁带备份的命令汇总

    假设你已经设置并安装好了磁带机,本人用的是HP SuitStore 500,外置,SCSI接口. 1. 查看磁带中的目录 tar tvf /dev/st0 2. 查看磁带内容并输出到一个文件中 tar ...

  8. CRYPTO进阶版:banana-princess

    CRYPTO进阶版:banana-princess 题目及附件 但是附件下载后用pdf查看器打不开 尝试用Dev-C++打开看看,并对比正常pdf 正常pdf 这两种究竟有什么联系呢? 思路 度娘搜索 ...

  9. mongodb知识点汇总

    关于本书 作者张友东,阿⾥云⾼级技术专家,主要关注分布式存储与数据库等技术领域,先后参与淘宝分布式⽂件系统TFS.阿 ⾥云数据库(POLARDB.MySQL.MongoDB.Redis ...)等项⽬ ...

最新文章

  1. 定义AI,麦卡锡、图灵、乔丹...我们听谁的?
  2. 反函数的导数:理论与应用
  3. MySQL在多表上创建视图
  4. linux主从服务器不能同步,Linux下redis的持久化、主从同步与哨兵详解
  5. 什么是 SAP SUP - Sybase Unwired Platform
  6. 使用JAX-RS的HTTP缓存
  7. 3.10 十进制转换为二进制
  8. 67. 二进制求和(转换法)
  9. (14)Verilog HDL参数:parameter
  10. 谷歌浏览器怎么查找和改变编码格式
  11. 指针变量使用规则实例
  12. 安卓TextView完美展示html格式代码
  13. 客制化键盘各部件介绍(客制化入门必看)
  14. 组合数及其性质和证明
  15. 【C语言】(百合花)水仙花数的算法思考习题4-6 水仙花数
  16. java 使用 Amazon SES 发送电子邮件
  17. eclipse “http://mybatis.org/dtd/mybatis-3-config.dtd“>爆红
  18. 解读青岛城市规划建设:5年内再添40座山头公园
  19. VSTO Ribbons的完整介绍
  20. react中findDOMNode

热门文章

  1. MATLAB交换图片红绿颜色通道,matlab的颜色映射colormap
  2. BCD码指令 AAA DAA AAS DAS AAM AAD
  3. win7 设置双屏壁纸
  4. 电话测试压力软件,1-60T简单压力测试仪器/简单的测试压力工具
  5. 阿里云云数据库(RDS)的登录问题
  6. 【CAD.Net】第四课:添加实体类和符号表到图纸
  7. Java“菜单“树递归-合并子树
  8. 怎么加载网页背景图随浏览器等比例缩放(css)
  9. 微软首次公开 GitHub 产品路线图
  10. Oracle数据库中神奇的dual表