mongodb shell基础命令
mongodb shell命令
1.数据库基本操作
在mongodb中,使用use来创建和选择数据库,当数据库不存在时,use会创建一个新的数据库,但是这数据库并没有持久化到硬盘里面,而存在内存中,只有当用户往这个新创建的空数据库建collection才会做持久化操作。
创建和切换数据库
use 数据库名称
查看有权限查看的所有的数据库
mongodb是不对空数据库做持久化的,所以新创建的空数据库,用show指令是看不见的,必须建collection后才能看见。
show dbs
show databases
查看当前正在使用的数据库
在mongo中db就代表了你当前正在使用的数据库对象。
db
删除数据库
db代表当前正在使用的数据库对象,删除数据库前,先要切换到要删除的数据库。主要用来删除已经持久化的数据库。
db.dropDatabase()
查看数据库用户
show users
2.集合的基本操作
在mongodb中集合(collection)对应mysql中的表(table)
显式创建collection
db.createCollection("CollectionName")
查看collection
可以看到mongodb一些操作命令是跟mysql兼容的。
show collections
show tables
隐式创建collection
当我们向一个不存在的collection插入一个文档(document)时,会先隐式创建一个collection,再进行数据的插入。
db.myCollection.insertOne( { name: "xiaoming" } );
3.增删改查
在mongodb中每一行数据对应一个文档(document),每个文档是一种类似于 JSON 的 格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。BSON可以是二进制形式的JSON。MongoDB中的记录是一个文档,它是一个由字段和值对(fifield:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。
3.1 增
插入一个文档
insertOne是用来插入一个文档的,当传入多个文档文档对象时,就会报错。
用法:
db.collectionName.insertOne(<document>,
{ writeConcern:<document>} )
- writeConcern:写关注,可选。
db.inventory.insertOne({ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
插入多个文档
insertMany用来插入多个文档(document),传入的是一个数组对象,里面包含了多个插入对象。
用法:
db.collectionName.insertOne(
[<document1>,<document2>],
{ writeConcern:<document>,ordered:boolean}
)
- writeConcern:写关注,可选。
- ordered:执行有序插入还是无序插入。默认为
true
。
列子:
db.inventory.insertMany([{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])
插入一个或多个
insert方法可以插入一个document也可以插入多个document,这里就不多说了,当成insertMany+insertOne综合来用就可以了。
用法:
db.inventory.insert({[<document1>,<document2>]},
{ writeConcern:<document>,ordered:boolean}
)
3.2 查
查询多条信息
查使用find()方法
用法:
db.collectionName.find(query,projection)
- query:查询条件
- projection:指定包含的字段
例子:
#查询包含size: { h: 14, w: 21, uom: "cm" }的文档
db.collection.find( { size: { h: 14, w: 21, uom: "cm" } } )
#传入一个{name:1}来表示指定显示name字段,其他字段不显示
db.collection.find( { size: { h: 14, w: 21, uom: "cm" } },{name:1} )
查询一条信息
查询一条信息用findOne()方法,调用此方法,返回的是查询到的第一条信息,当找到第一条信息时就不会继续往下找了。
用法:
db.collectionName.findOne(query,projection)
例子:
#查询size: { h: 14, w: 21, uom: "cm" }的文档,找到立即返回
db.collection.find( { size: { h: 14, w: 21, uom: "cm" } } )
分页查询
limit(num),指定要查询的条数。
skip(num),指定跳过的条数
//查询前面前前三条数据
db.collection.find().limit(3)
//从第2条开始查询,查到第5条
db.collection.find().skip(2).limit(3)
排序查询
sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
//按userid的降序
db.collection.find().sort({userid:-1})
//按userid的升序
db.collection.find().sort({userid:1})
正则查询
mongodb支持正则表达式,放在 / 之间
db.collect.find({userid:/正则表达式子/})
注意:skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。
条件查询
查询时我们往往需要一些比较条件,>,<,or,and等等。
db.集合名称.find({ "field" : { $gt: value }}) // 大于: field > value
db.集合名称.find({ "field" : { $lt: value }}) // 小于: field < value
db.集合名称.find({ "field" : { $gte: value }}) // 大于等于: field >= value
db.集合名称.find({ "field" : { $lte: value }}) // 小于等于: field <= value
db.集合名称.find({ "field" : { $ne: value }}) // 不等于: field != value
- $gt 大于
- $lt 小于
- $gte 不大于
- $lte 不小于
- $ne 不等于
db.集合名称.find({userid:{$in:["1003","1004"]}})
db.集合名称.find({userid:{$nin:["1003","1004"]}})
- $in 包含
- $nin 不包含
$and:[ { },{ },{ } ]
//例子:
db.集合名称.find({$and[{userid:{$gt:NumberInt(700)}},{name:"zhangsan"}]
}) $or:[ { },{ },{ } ]
//例子:
db.集合名称.find({$or[{userid:{$lt:100}},{name:"zhangsan"}]
})
3.3改
使用update()方法可以进行collection的文档信息的更改。
用法:
db.collection.update(query, update, options)
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document>, collation: <document>, arrayFilters: [ <filterdocument1>, ... ], hint: <document|string> // Available starting in MongoDB 4.2 }
)
- query:查询条件
- update:更改的信息(默认会直接覆盖整个文档)
- upsert:可选。如果设置为true,则在没有与查询条件匹配的文档时创建新文档。默认值为false,如果找不到匹配项,则不会插入新文档。
- multi :可选。如果设置为true,则更新符合查询条件的多个文档。如果设置为false,则更新一个文档。默认值为false。
例子:
//使用$set符可以只修改文档中的likenum字段,而非直接将整个文档覆盖
db.collection.update({_id:"2"},{$set:{likenum:NumberInt(889)}})
//查询所有包含userid=1003的信息,并修改其中的likenum字段,multi为更新符合查询条件的多个文档
db.collection.update({userid:"1003"}, //条件{$set:{likenum:NumberInt(889)}}, //修改{multi:true} //操作参数(这里选择修改多个符合条件的文档)
)
3.4删
删除操作十分简单,跟上面的套路一样,有分删除一条和多条。
remove(),delete()One,deleteMany()方法
//综合
db.collection.remove(<query>,{justOne: <boolean>, //删除一条writeConcern: <document>, collation: <document>}
)
//删除一条
db.collection.deleteOne(<query>,{writeConcern: <document>,collation: <document>,hint: <document|string> // Available starting in MongoDB 4.4}
)
//删除多条
db.collection.deleteMany(<query>,{writeConcern: <document>,collation: <document>}
)
列子:
//删除_id=1的
db.collection.remove({_id:"1"})
//删除全部
db.collection.remove({})
//只删除userid=1的信息
db.collection.deleteOne({userid:1})
//删除多条name="zhangsan"的文档
db.collection.deleteMany({name:"zhangsan"})
4.索引操作
索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB就必须执行全集合扫描,以选择与查询语句匹配的文档。MongoDB索引使用B树数据结构。
查看索引
db.collection.getIndexes()
mongodb会给每个collection创建一个索引,默认为以_id字段建立,也就是(机器码+时间戳)的默认字段。
创建索引
db.collection.createIndex({"a": 1 //索引字段},{unique: true, //条件sparse: true,expireAfterSeconds: 3600}
)
创建
//以userid升序创建索引
db.collection.createIndex({userid:1})
//以userid升序,name降序创建索引
db.collection.createIndex({userid:1,name:-1})
删除索引
db.collection.dropIndex(index)
//例子:删除以userid为升序的索引
db.collection.dropIndex({userid:1})//删除所有索引
db.collection.dropIndexes()
查看执行计划
通常,我们想知道,建立的索引是否有效,效果如何,都需要通过执行计划查看。
db.collection.find(query,options).explain(options)
//结果看"winningPlan"中的"stage",
//如果为"COLLSCAN"就是全集合搜索,如果是 "IXSCAN"就是基于索引扫描
mongodb shell基础命令相关推荐
- 第1篇、Linux操作基础|Shell基础命令
1.操作系统和内核 常见操作系统: windows iOS macOS 安卓 塞班 鸿蒙 deepin ubuntu centos 内核分类: nuix(收费.不开源) linux(开 ...
- MongoDB数据库(了解MongoDB及基础命令,备份数据库)
文章目录 MongoDB数据库(了解MongDB及基础命令,备份数据库) 什么是MongoDB ? 主要特点 配置mongdb数据库 多实例配置 数据库操作 备份数据库 MongoDB数据库(了解Mo ...
- MongoDB shell简单命令
1.shell登录MongoDB客户端 首先我们需要进入MongoDB的服务内 如果已经通过软链接过mongo那么我们可以直接mongo进入我们的MongoDB服务 这里我们进入MongoDB安装目录 ...
- CentOS7上安装MongoDB及基础命令学习
安装MongoDB 安装各个Linux平台依赖包 > ##Red Hat/CentOS > sudo yum install libcurl openssl > > ##Ubu ...
- shell 基本命令linux,Linux基础知识:shell基础命令
注:实验系统为Red Hat Enterprise Linux Server release 7.1 (Maipo) 1.什么是shell 百度:shell俗称壳(区别于核),是指提供使用者使用界面 ...
- shell基础命令管理
一.shell简介 1.Shell是什么? 在计算机语言中,shell是指一种命令行解释器,是为用户和操作系统之间通信提供的一种接口(想象一下,若果没有一种与计算机沟通的方式,那么计算机如何得到来自人 ...
- 『面试知识集锦100篇』2.linux篇丨shell基础命令全集,我奶奶的速查手册!!
目录 第一部分:基础知识 一.Linux 文件基本属性 二.Linux 磁盘管理 2.1 df命令 2.2 du命令 2.3 磁盘检验
- Shell基础命令之echo
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用. 该命令的一般格式为: echo [ -n ] 字符串 其中选项n表示输出文字后不换行:字符串能加引号,也能不加引号.用echo命令 ...
- MongoDB自学笔记8--- 3.3 MongoDB Shell简介及简单使用
3.3 MongoDB Shell简介及简单使用 mongoDB Shell是mongoDB自带的一个javascript shell,随mongoDB安装包一同发布.可以使用mongoDB she ...
最新文章
- (已解决)module ‘tensorflow‘ has no attribute ‘app‘
- UISegmentedControl的详细使用
- An overview of gradient descent optimization algorithms
- JavaScript 访问对象属性和方法及区别
- 类级别的分装 ---四种访问级别
- python中处理命令行参数命令getopt
- 【HDFS】HDFS操作命令
- Qt通过ODBC连接opengauss数据库
- 第五部分 家庭创业奔小康6.开家畅销书专送店
- 51单片机-STC89C52系列学习第一篇之IO口学习
- 监控行业常见视频格式
- ftp服务器和共享文件夹权限设置,ftp服务器共享文件夹权限设置
- 10-Little prince's trip to Java-奇数魔方阵
- 义隆单片机可用c语言写了吗,义隆单片机编程时应注意的几点
- 困扰所有SAP顾问多年的问题终于解决了
- 哪些行业可以申请高新技术企业?
- 战地2服务器2地图修改,【战地2怎么将地图改为32人】如何修改地图_战地2修改地图教程_游戏城...
- 旭日X3派AI推理(YOLOv5测试)
- 输入子系统(1)——框架认识
- docker搭建vulhub