MongoDB中不溜教程(1)简介与命令
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 命令有两个功能:
- 当指定的dbname已存在表示切换数据库,与mysql中的use dbname类似。
- 指定的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教程之基本管理命令
- 【Mongodb教程 第十八课 】MongoDB常用命令 数据库命令 集合操作命令
- MongoDB系列教程(二):MongoDB简介
- Ubuntu系统中安装MongoDB及其启动命令mongod的教程
- 【转】shell 教程——01 Shell简介:什么是Shell,Shell命令的两种执行方式
- MongoDB入门教程二[MongoDB Shell 简介与使用]
- 【MongoDB】简介及安装教程
- sqlite 简介 命令 数据库 使用 教程
- mongodb 3.0下载安装、配置及mongodb最新特性、基本命令教程详细介绍
- shell教程-001:shell简介 什么是shell,shell命令的两种执行方式
- 【Mongodb教程 第二课 】 MongoDB 创建数据库 use 命令
- 【Mongodb教程 第十七课 】MongoDB常用命令 数据库命令 集合操作命令
- mongodb入门教程之命令汇总
- MongoDB教程之基本管理命令
- shell教程-001:shell简介 什么是shell,shell命令的两种执行方式
- MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)
- mongodb简介,应用场景,常用命令,优缺点 (思维导图)
- 批处理教程1——简单批处理内部命令简介
- 3DMax基础入门教程,命令面板的设置简介以及功能
- MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)