MongoDB教程之简介与命令

  • MongoDB简介
  • MongoDB下载安装
  • 名词解释
  • 常用命令
    • 数据库命令
      • 创建数据库
      • 查看当前数据库
      • 显示数据库列表
      • 删除数据库
    • 集合命令
      • 创建集合
      • 显示集合列表
      • 删除集合
    • 文档命令
      • 插入文档
      • 更新文档
      • 删除文档
      • 查询文档
  • 结尾

MongoDB简介

MongoDB 是由C++语言编写的,基于分布式文件存储的开源数据库系统
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

以上是官方介绍,简单说:
MongoDB与mysql有类似的地方它们都是存储数据的系统,但是mysql是关系型数据,而MongoDB是NoSql数据库,MongoDB在面对海量数据时提供了分布式的存储方式,支持内存与磁盘两种方式,内部保存的数据格式类似JSON。

MongoDB下载安装

按照图解步骤一步一步操作即可,这里给出一些链接自行下载安装,不在本章节浪费篇幅介绍。
win平台: https://www.runoob.com/mongodb/mongodb-window-install.html
linux平台:https://www.runoob.com/mongodb/mongodb-linux-install.html
mac平台:https://www.runoob.com/mongodb/mongodb-osx-install.html

名词解释

介绍mongodb的具体操作之前我们先介绍一些它领域内的常用名词,与mysql对比着学习,如下表:

SQL术语 mongodb术语 描述
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column filed 字段/域
index index 索引
table joins 表连接,mongodb不支持表连接
primary key primary key 主键

下图也是表名他们之间的对应关系:

常用命令

下载安装配置完成,运行安装目录bin目录下的mongo.exe文件,是自带的支持js语法的交互式shell(命令行解释器)。接下来我们就在shell中使用一些命令来操作数据库,集合,文档等。一步步实现数据在MongoDB内的增删改查。

数据库命令

MongoDB内可以创建多个数据库,这些数据库磁盘中可以找到,默认就是我们创建的data/db文件夹。

创建数据库

>use dbname
switched to db dbname

dbname是自定义的数据库名,use 命令有两个功能:

  1. 当指定的dbname已存在表示切换数据库,与mysql中的use dbname类似。
  2. 指定的dbname不存在,则新建数据库。

查看当前数据库

>db
dbname

显示数据库列表

>show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
>

admin,config,local是默认自带的库,在这里我们并没有看到自己刚刚创建的库,这里我们需要向新建的库中插入集合之后才会显示在列表中。

切换至自创的数据库,体验插入数据:

>db.collectionname.insert({"name":"帅气如我"})

接下来我们再次执行show dbs命令便可以看到自己创建的数据库了。

>show dbs
admin    0.000GB
config    0.000GB
dbname 0.000GB
local      0.000GB
>

删除数据库

切换到想要删除的数据库下,执行以下命令:

>db.dropDatabase()

注意:命令区分大小写。

集合命令

集合,collection相当于sql中的表格,sql中如果创建表格首先需要涉及表结构,比如表字段,字段类型等,但是在nosql中不需要考虑这些,因为它的结构是不固定可扩展的。

创建集合

切换想要操作的数据库下执行:

>db.createCollection(collectionname, options)

此命令创建集合,collectionname是自定义集合名,options是可选的参数,表示针对集合设置的选项。
参数列表一览:

字段 类型 描述
capped 布尔 (可选) 如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。
autoIndexId 布尔 (可选) 如为 true,自动在 _id 字段创建索引。默认为 false。
size 数值 (可选) 为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。
max 数值(可选) 指定固定集合中包含文档的最大数量。

举例:创建固定集合 firstc,整个集合空间大小 102400KB, 文档最大个数为 10000 个并且会自动创建主键_id字段。

>db.createCollection("firstc", { capped : true, autoIndexId : true, size : 102400, max : 10000 } )

MongoDB还有另外一种创建集合的方式,直接执行插入文档命令,如果指定的集合文档不存在,则会创建集合。

>db.twoc.insert({"name":"帅气如我"})

此命令我们刚才在显示数据库列表时已经有所了解,其中twoc就是指定的集合名,twoc不存在则创建,insert中传入的是文档数据。

显示集合列表

>show collections

列出当前操作库下所有的集合。(相当于sql中列出当前数据库内所有的表格。)

删除集合

>db.collectionname.drop()

从数据库中移除指定的集合。

文档命令

文档,document,相对于sql中的一条记录,我们在mysql学习是知道,最常用的技术就是针对记录的增删改查,所以,文档操作也是我们学习的重点,当前我们简单的操作它的命令。
文档对应数据库概念中的记录,但是他们的形态很不一样,记录中是一个个字段的数据集,而文档的格式更像是json对象,但是我们叫它BSON,Binary JSON 的简称,BSON 是一种类似 JSON 的二进制形式的存储格式。

插入文档

>db.collection.insert({"name":"帅气如我","age":20,"fav":["跑步","游泳"]})

insert中传入的BSON就是一条文档, collectionname是我们的集合名,如果collectionname集合不在该数据库中,则自动创建并插入文档。
除了insert()以外还可以使用save(),save()既可以插入也可以更新。

MongoDB在3.2 版本后提供了新的语法可用于插入文档,也是官方推荐的:

  • db.collection.insertOne():向指定集合中插入一条文档数据
  • db.collection.insertMany():向指定集合中插入多条文档数据

举例批量插入:

>db.collection.insert({"name":"帅气如我","age":20,"fav":["跑步","游泳"]})

insertMany中传入的是一个数组,一次性插入多条数据。

可通过db.col.find()命令验证是否插入成功。

更新文档

MongoDB 提供了 update() 和 save() 两个方法来更新集合中的文档。

update()
update() 用于更新已存在的文档,语法:

db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>}
)

参数说明:

参数名 解释
query update的查询条件,类似sql update查询内where后面的
update update的对象和一些更新的操作符(如$set)等,也可以理解为sql update查询内set后面的
upsert 可选,这个参数的意思是,如果不存在update的记录,是否插入新的文档,true为插入,默认是false,不插入
multi 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern 可选,抛出异常的级别。

举例:我们先像集合中插入几条文档,然后试着修改其数据。

>db.collection.insert({"name":"帅气如我","age":20,"fav":["跑步","游泳"]})
>db.collection.insert({"name":"帅气如你","age":30,"fav":["跑步","游泳"]})
>db.collection.insert({"name":"帅气如他","age":40,"fav":["跑步","游泳"]})

修改帅气如我的年龄为50:

db.collection.update({'name':'帅气如我'},{$set:{'age':50}},{multi:true})

解释:

  • 第一部分是条件,表示此次更新操作针对的是name为’帅气如我’的文档。
  • 第二部分是修改内容,把年龄域的值改成50。除了$set还有其他操作符,比如$inc,{$inc:{‘age’:50}则表示在原来的年龄基础上加50。
  • 第三部分是可选参数,multi:true表示所有叫’帅气如我’的文档都会被更新,如果不设置或者默认值false,只会修改符合条件的第一条文档。

条件部分支持有多种关系运算符,在接下来的查询命令中我们再详细介绍。

save()
save()也是拥有插入和更新两个动作,它是根据传入的文档的"_id"的值进行判断,如果有对应的文档存在则更新,若没有则新建,了解即可。

删除文档

删除已经存在的文档使用的是remove()函数,语法也比较简单:

db.collection.remove(<query>,{justOne: <boolean>,writeConcern: <document>}
)

参数说明:

参数名 解释
query (可选)删除的文档的条件,无条件则全部删除
justOne (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档
query (可选)抛出异常的级别。

举例:删除名字叫"帅气如我"的文档中的第一条文档。

db.collection.remove({'name':'帅气如我'}, { justOne: 1 })

新版本提供了 deleteOne() 和 deleteMany()进行单挑删除和批量删除,可以理解为它们两个分别是justOne:true和justOne:false的简化写法。

执行删除命令后最好再执行db.repairDatabase()来释放磁盘空间。

查询文档

MongoDB提供find()函数来查询文档,语法如下:

db.collection.find(query, projection)

参数解释
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

db.col.find().pretty()

举例:

db.collection.find({'name':'帅气如我'})

这里需要{‘name’:‘帅气如我’}中的冒号相当于"=",但是在mongodb的命令中是没有">,<,<="等这些符号的,需要使用对应的格式。

操作 格式 范例
等于 {:} db.col.find({“by”:“菜鸟教程”}).pretty()
小于 {:{$lt:}} db.col.find({“by”:{$lt:50}}).pretty()
小于或等于 {:{$lte:}} db.col.find({“by”:{$lte:50}}).pretty()
大于 {:{$gt:}} db.col.find({“by”:{$gt:50}}).pretty()
大于或等于 {:{$gte:}} db.col.find({“by”:{$gte:50}}).pretty()
不等于 {:{$ne:}} db.col.find({“by”:{$ne:50}}).pretty()

结尾

关于MongoDb的命令我们就介绍到这里,因为在实际代码运用不同语言中都会有对应的api。我们的只需要对命令了解,实际开发以对应语言的Api为主,下一章节我们将介绍主要Python通过mongoengine操作MongoDB,它是一种ODM形式的三方库。

MongoDB中不溜教程(1)简介与命令相关推荐

  1. mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令

    <MYSQL教程Linux系统中最危险的10条命令>要点: 本文介绍了MYSQL教程Linux系统中最危险的10条命令,希望对您有用.如果有疑问,可以联系我们. Linux命令行佷有用.很 ...

  2. W3school:CSS基础:教程、简介、语法、选择器、使用(在HTML中引入)

    W3school:CSS基础:教程.简介.语法.选择器.使用(在HTML中引入) 教程.简介: 链接:https://www.w3school.com.cn/css/index.asp 一.CSS语法 ...

  3. mongodb中常用的shell命令

    mongodb中常用的shell命令 常用的shell命令 1.帮助命令 2.数据库操作命令 3.创建数据库和集合 4.集合中的文档(document)操作 5.聚集集合查询 常用的shell命令 1 ...

  4. MongoDB极简教程

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:我没有三颗心脏 1.MongDB 简介 MongoDB(来自 ...

  5. Mongodb python驱动教程

    2019独角兽企业重金招聘Python工程师标准>>> Mongodb python驱动教程 安装 使用python驱动mongodb需要下载.安装PyMongo包 Windows用 ...

  6. 【编程不良人】MongoDB最新实战教程学习笔记

    简介 视频链接:01.简介和历史_哔哩哔哩_bilibili 文档地址: https://docs.mongodb.com/manual/ MongoDB教程:MongoDB 教程 | 菜鸟教程 注意 ...

  7. 第10章 MongoDB 删除数据库教程

    MongoDB 删除database 语法 MongoDB 删除database的语法格式如下: db.dropDatabase() 删除当前database,默认为 test,尊敬的读者您可以使用 ...

  8. 第46章 MongoDB 自动增长教程

    第46章 MongoDB 自动增长教程 MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识. 但在某些情况下,咱们可能需要实现 Obj ...

  9. mongodb安装教程Linux,Ubuntu16.04手动安装MongoDB的详细教程

    我最近在研究MongoDB的路上,那么今天也算个学习笔记吧!今天用Ubuntu16.04手动安装MongoDB,分享给大家 注意事项: 仔细按步骤阅读操作 注意别写错字 牢记上面两点 一.用自带的火狐 ...

最新文章

  1. Linux系统编程——线程私有数据
  2. 解决Putty中左边 alt+b 不工作的问题
  3. 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
  4. hql取满足条件最新一条记录_MySql 之一条查询sql的执行过程
  5. python中的常见的列表操作及注意事项
  6. Vijos P1975 扫雷游戏【谜题】
  7. iOS学习笔记32 - 锚点
  8. Vue2 后台管理系统解决方案
  9. Python知识点-hashlib模块
  10. PDF文件阅读器迷你绿色纯净版3.4 和《电脑爱好者》2015年PDF 更新至18期
  11. web下拉菜单代码html,简单的单级下拉菜单实现_html/css_WEB-ITnose
  12. Photoshop cc 2019 破解教程
  13. PHP 实现发送短信验证码(CI框架)
  14. 网页游戏防外挂策略。
  15. 火车头免登录php代码,福利|火车采集器免登陆发布接口集合
  16. 面试腾讯Java后台岗,处女面秒挂,17天后竟然拿下字节跳动offer
  17. 鼠标点击特效(富强,民主,文明,和谐,诚信,友善)
  18. #榜样的力量#航班管家全球大交通出行疫情追踪服务系统丨数据猿新冠战“疫”公益策划...
  19. 发射功率 dBm 计算
  20. 2020清华大学计算机学院黄翔,清华大学计算机科学与技术系2020—2021学年度学生会主席候选人名单公示...

热门文章

  1. P5266 【深基17.例6】学籍管理
  2. live.com邮箱换成中文界面
  3. 从两道基础二分算法题谈check函数的写法
  4. PHP 制作通讯录(一)
  5. 域名怎么卖:建站出售
  6. 开放源码的 CnPack IDE 专家包发布 0.9.1 版 !
  7. 用7000字长文带你分析深圳二手房市场现况!
  8. 大话西游手游服务器合服信息查询,大话西游手游合区查询 6月21日合区服务器列表...
  9. 对vector<int> 的数组使用sort排序出错
  10. python模拟股票查询