MongoDB的介绍以及常用命令的使用

本文深入浅出地介绍了MongoDB数据库的特点和体系结构,涵盖了面向文档的存储方式、模式自由的特性、强大的查询语言和自动碎片处理等优势,并详细讲解了数据库、集合和文档的概念。此外,还提供了丰富的MongoDB命令实例,包括数据插入、查询、更新、删除和统计等常用操作。

本篇博客将带大家了解MongoDB的特点和体系结构,掌握常用的MongoDB命令。

一、MongoDB的简介

1、什么是MongoDB
​MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似 JSONBSON 格式,因此可以存储比较复杂的数据类型。
​MongoDB 的官方网站地址是:http://www.mongodb.org/

2、 MongoDB特点
​MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。具体特点总结如下:
(1)面向集合存储,易于存储对象类型的数据
(2)模式自由
(3)支持动态查询
(4)支持完全索引,包含内部对象
(5)支持复制和故障恢复
(6)使用高效的二进制数据存储,包括大型对象(如视频等)
(7)自动处理碎片,以支持云计算层次的扩展性
(8)支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl 及 C++语言的驱动程序,社区中也提供了对 Erlang 及 .NET 等平台的驱动程序
(9) 文件存储格式为 BSON(一种 JSON 的扩展)

3、MongoDB体系结构
文档(document)、集合(collection)、数据库(database)这三部分组成的。逻辑结构是面向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。

(1)MongoDB 的文档(document),相当于关系数据库中的一行记录。

(2)多个文档组成一个集合(collection),相当于关系数据库的表。

(3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。

文档(document)、集合(collection)、数据库(database)的层次结构如下图:
在这里插入图片描述下表是MongoDB与MySQL数据库逻辑结构概念的对比:
在这里插入图片描述
4、MongoDB基本的数据类型

null:用于表示空值或者不存在的字段,{“x”:null}

布尔型:布尔类型有两个值true和false,{“x”:true}

数值:shell默认使用64为浮点型数值。{“x”:3.14}或{“x”:3}。对于整型值,可以使用NumberInt(4字节符号整数)或NumberLong(8字节符号整数), {“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}

字符串:UTF-8字符串都可以表示为字符串类型的数据,{“x”:“呵呵”}

日期:日期被存储为自新纪元依赖经过的毫秒数,不存储时区,{“x”:new Date()}

正则表达式:查询时,使用正则表达式作为限定条件,语法与JavaScript的正则表达式相同,{“x”: /[abc]/}

数组:数据列表或数据集可以表示为数组,{“x”: [“a“,“b”,”c”]}

5、吐槽和评论数据特点分析
(1)数据量大
(2)写入操作频繁
(3)价值较低
对于这样的数据,我们更适合使用MongoDB来实现数据的存储

二、MongoDB常用的命令

1、选择和创建数据库
选择和创建数据库的语法格式(该命令如果数据库不存在,就会自动创建):
use 数据库名

举例(创建一个student数据库):use studentdb

2、插入与查询文档
(1)查询集合的语法格式:db.集合名称.find()
举例(如果我们要查询spit集合的所有文档,我们输入以下命令):db.student.find()

注意:这里你会发现每条文档会有一个叫_id的字段,这个相当于我们原来关系数据库中表的主键,当你在插入文档记录时没有指定该字段,MongoDB会自动创建,其类型是ObjectID类型。如果我们在插入文档记录时指定该字段也可以,其类型可以是ObjectID类型,也可以是MongoDB支持的任意类型。

(2)插入文档的语法格式: db.集合名称.insert(数据);
举例(向student中插入一条数据):db.student.insert({_id:NumberInt(1),name:“张三”,age:NumberInt(16),gradeId:NumberInt(1)})

(3)条件查询:db.集合名称.find({条件})
举 例(查询学生姓名为张三学生):db.student.find({name:“张三”})
(查询性年级为1的第一条数据):db.student.findOne({gradeId:1})
(查询性年级为1的第n条数据):db.student.find({gradeId:1}).limit(n)

(4)模糊查询
MongoDB的模糊查询是通过正则表达式的方式实现的。格式为:db.student.find({/模糊查询字符串/})
举例(查询名字中有 唐 的学生):db.student.find({name:/唐/})
(查询学生名字以 张 开头的学生):db.student.find({name:/^张/})

(5)修改文档的语法结构:db.集合名称.update(条件,修改后的数据)
举例(修改学生id为1的学生,年龄为22):db.student.update({_id:1},{$set:{age:22}})

(6)删除文档的语法结构:db.集合名称.remove(条件)
举例(删除学生姓名为张三的学生):db.student.remove({name:“张三”'})
注意!如果不写条件就会讲数据全部删除,请慎用!!!

(7)统计条数的语法结构:db.集合名称.count({条件})

举例(统计年龄为18的学生个数):db.student.count({age:18})

(8)大于 小于 不等于的语法结构

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

举例(查询年龄大于等于18的学生):sb.student.find({age:{$gte:18}})

(9)列值增长
如果我们想实现对某列值在原有值的基础上进行增加或减少,可以使用 $ inc运算符来实现
举例(学生id为1的年龄加1):db.student.update({_id:1},{$inc:{age:NumberInt(1)}})

(10)条件连接
我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。(相当于SQL的and)

格式为:db.集合名称.find({$and:[ { },{ },{ } ]})
举例(查询学生年龄大于15小于17的学生):db.student.find({ $ and:[ {age:{ $ gte:15}},{age:{$lt:17} } ]})

如果两个以上条件之间是或者的关系,我们使用操作符进行关联,与前面and的使用方式相同
格式为:db.集合名称.find({$or:[ { },{ },{ } ]})

(11)包含与不包含
包含使用$in操作符
举例(查询student集合中id包含88和99的数据):db.student.find({_id:{$in:[88,99]}})

不包含使用$ nin操作符。
举例(查询student集合中id不包含88和99的数据):db.student.find({_id:{$nin:[88,99]}})

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值