进阶版--Mongodb命令汇总
目录
一、基本命令:
二、常用命令:
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命令汇总相关推荐
- MongoDB命令汇总
基础篇(能解决工作中80%的问题): MongoDB的概述.应用场景.下载方式.连接方式和发展历史等 MongoDB数据类型.重要概念以及shell常用指令 MongoDB文档的各种增加.更新.删除操 ...
- MongoDB 常用命令汇总
MongoDB 常用命令汇总 mongodb数据库结构与传统关系型数据库对比 MongoDB 创建数据库 创建/切换数据库 查看当前数据库名称 查看所有数据库 MongoDB 删除数据库 删除集合 M ...
- Linux| Linux常用命令汇总(旧版)
*********************************最常用命令********************************************** 文件查找: find ...
- hypermesh抽中面后的处理_总结|Hypermesh中几何清理命令汇总
原标题:总结|Hypermesh中几何清理命令汇总 Hypermesh中几何清理命令汇总 在有限元分析中,由于三维模型中具有大量的圆角.螺栓孔.交叉面.微小曲面等特征,给前处理带来了极大的麻烦,因此前 ...
- 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录
基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...
- Matlab命令汇总
Matlab命令汇总 都是从网上转的,贴到一起方便查,使用的时候直接Ctrl+F搜索. 一.常用对象操作:除了一般windows窗口的常用功能键外. 1.!dir 可以查看当前工作目录的文件. ! ...
- 使用tar进行磁带备份的命令汇总
假设你已经设置并安装好了磁带机,本人用的是HP SuitStore 500,外置,SCSI接口. 1. 查看磁带中的目录 tar tvf /dev/st0 2. 查看磁带内容并输出到一个文件中 tar ...
- CRYPTO进阶版:banana-princess
CRYPTO进阶版:banana-princess 题目及附件 但是附件下载后用pdf查看器打不开 尝试用Dev-C++打开看看,并对比正常pdf 正常pdf 这两种究竟有什么联系呢? 思路 度娘搜索 ...
- mongodb知识点汇总
关于本书 作者张友东,阿⾥云⾼级技术专家,主要关注分布式存储与数据库等技术领域,先后参与淘宝分布式⽂件系统TFS.阿 ⾥云数据库(POLARDB.MySQL.MongoDB.Redis ...)等项⽬ ...
最新文章
- 定义AI,麦卡锡、图灵、乔丹...我们听谁的?
- 反函数的导数:理论与应用
- MySQL在多表上创建视图
- linux主从服务器不能同步,Linux下redis的持久化、主从同步与哨兵详解
- 什么是 SAP SUP - Sybase Unwired Platform
- 使用JAX-RS的HTTP缓存
- 3.10 十进制转换为二进制
- 67. 二进制求和(转换法)
- (14)Verilog HDL参数:parameter
- 谷歌浏览器怎么查找和改变编码格式
- 指针变量使用规则实例
- 安卓TextView完美展示html格式代码
- 客制化键盘各部件介绍(客制化入门必看)
- 组合数及其性质和证明
- 【C语言】(百合花)水仙花数的算法思考习题4-6 水仙花数
- java 使用 Amazon SES 发送电子邮件
- eclipse “http://mybatis.org/dtd/mybatis-3-config.dtd“>爆红
- 解读青岛城市规划建设:5年内再添40座山头公园
- VSTO Ribbons的完整介绍
- react中findDOMNode
热门文章
- MATLAB交换图片红绿颜色通道,matlab的颜色映射colormap
- BCD码指令 AAA DAA AAS DAS AAM AAD
- win7 设置双屏壁纸
- 电话测试压力软件,1-60T简单压力测试仪器/简单的测试压力工具
- 阿里云云数据库(RDS)的登录问题
- 【CAD.Net】第四课:添加实体类和符号表到图纸
- Java“菜单“树递归-合并子树
- 怎么加载网页背景图随浏览器等比例缩放(css)
- 微软首次公开 GitHub 产品路线图
- Oracle数据库中神奇的dual表