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. 第1篇、Linux操作基础|Shell基础命令

    1.操作系统和内核 常见操作系统: windows  iOS  macOS  安卓  塞班  鸿蒙 deepin  ubuntu   centos 内核分类: nuix(收费.不开源) linux(开 ...

  2. MongoDB数据库(了解MongoDB及基础命令,备份数据库)

    文章目录 MongoDB数据库(了解MongDB及基础命令,备份数据库) 什么是MongoDB ? 主要特点 配置mongdb数据库 多实例配置 数据库操作 备份数据库 MongoDB数据库(了解Mo ...

  3. MongoDB shell简单命令

    1.shell登录MongoDB客户端 首先我们需要进入MongoDB的服务内 如果已经通过软链接过mongo那么我们可以直接mongo进入我们的MongoDB服务 这里我们进入MongoDB安装目录 ...

  4. CentOS7上安装MongoDB及基础命令学习

    安装MongoDB 安装各个Linux平台依赖包 > ##Red Hat/CentOS > sudo yum install libcurl openssl > > ##Ubu ...

  5. shell 基本命令linux,Linux基础知识:shell基础命令

    注:实验系统为Red Hat Enterprise Linux Server release 7.1 (Maipo) 1.什么是shell ​百度:shell俗称壳(区别于核),是指提供使用者使用界面 ...

  6. shell基础命令管理

    一.shell简介 1.Shell是什么? 在计算机语言中,shell是指一种命令行解释器,是为用户和操作系统之间通信提供的一种接口(想象一下,若果没有一种与计算机沟通的方式,那么计算机如何得到来自人 ...

  7. 『面试知识集锦100篇』2.linux篇丨shell基础命令全集,我奶奶的速查手册!!

    目录 第一部分:基础知识 一.Linux 文件基本属性 二.Linux 磁盘管理 2.1 df命令 2.2 du命令 2.3 磁盘检验

  8. Shell基础命令之echo

    echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用. 该命令的一般格式为: echo [ -n ] 字符串 其中选项n表示输出文字后不换行:字符串能加引号,也能不加引号.用echo命令 ...

  9. MongoDB自学笔记8--- 3.3 MongoDB Shell简介及简单使用

     3.3 MongoDB Shell简介及简单使用 mongoDB Shell是mongoDB自带的一个javascript shell,随mongoDB安装包一同发布.可以使用mongoDB she ...

最新文章

  1. (已解决)module ‘tensorflow‘ has no attribute ‘app‘
  2. UISegmentedControl的详细使用
  3. An overview of gradient descent optimization algorithms
  4. JavaScript 访问对象属性和方法及区别
  5. 类级别的分装 ---四种访问级别
  6. python中处理命令行参数命令getopt
  7. 【HDFS】HDFS操作命令
  8. Qt通过ODBC连接opengauss数据库
  9. 第五部分 家庭创业奔小康6.开家畅销书专送店
  10. 51单片机-STC89C52系列学习第一篇之IO口学习
  11. 监控行业常见视频格式
  12. ftp服务器和共享文件夹权限设置,ftp服务器共享文件夹权限设置
  13. 10-Little prince's trip to Java-奇数魔方阵
  14. 义隆单片机可用c语言写了吗,义隆单片机编程时应注意的几点
  15. 困扰所有SAP顾问多年的问题终于解决了
  16. 哪些行业可以申请高新技术企业?
  17. 战地2服务器2地图修改,【战地2怎么将地图改为32人】如何修改地图_战地2修改地图教程_游戏城...
  18. 旭日X3派AI推理(YOLOv5测试)
  19. 输入子系统(1)——框架认识
  20. docker搭建vulhub

热门文章

  1. ZBarSDK扫描二维码
  2. 判断JavaScript对象为null或者属性为空
  3. 充满想象力的 JavaScript 物理和重力实验
  4. 理解并取证:DLS网络架构和PPPOE数据帧
  5. linux下安装编译网卡驱动
  6. ORACLE SQL:经典查询练手第一篇
  7. 结合Selenium 和 Requests完成动态数据爬取
  8. 浅谈Nginx负载均衡与F5(硬件)的区别
  9. 解秘亿级网站的一本书——亿级流量网站架构核心技术
  10. 并发insert情况下会发生重复的数据插入问题