在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
MongoDB作为灵活丰富的数据库而深受人们的喜爱和欢迎。本文旨在讲解MongoDB,内容包括MongoDB的概念、支持的数据类型列表、与mysql对比、基础操作、增删改查、修改器等等。希望本教程可以带大家全面了解MongoDB数据库。
1、MongoDB的概念。
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
2、MongoDB支持的数据类型列表
String : 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。
Integer : 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。
Boolean : 此类型用于存储一个布尔值 (true/ false) 。
Double : 这种类型是用来存储浮点值。
Min/ Max keys : 这种类型被用来对BSON元素的最低和最高值比较。
Arrays : 使用此类型的数组或列表或多个值存储到一个键。
Timestamp : 时间戳。这可以方便记录时的文件已被修改或添加。
Object : 此数据类型用于嵌入式的文件。
Null : 这种类型是用来存储一个Null值。
Symbol : 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。
Date : 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。
Object ID : 此数据类型用于存储文档的ID。
Binary data : 此数据类型用于存储二进制数据。
Code : 此数据类型用于存储到文档中的JavaScript代码。
Regular expression : 此数据类型用于存储正则表达式
3、MongoDB 与mysql对比
mysql mongodb
db db
tables collections集合
row(行) document文档
colum(列) field
4、MongoDB数据库数据表的基础操作
本着存在就使用,不存在即创建的原则
use db 使用数据库,
db.dropDatabase() 删除数据库
show dbs 查看当前多有的数据库
show tables 查看数据表(collections)
show collections 一样的查看当前数据表
db.(数据表名).drop() 删除表
db 查看当前使用的是哪一个数据库
5、MongoDB文档的增删改查
以下info代表表(collections)
1>增
db.info.insert({'name':'huahua'}) (官方不推荐,既可以插入多条也可以只插入一条数据)
db.info.insertOne({'name':'huahua'})
db.info.insertMany([{'name':'huahua'}])
2>删
db.info.remove({条件})
db.info.deleteOne({条件})
db.info.deleteMany({条件})
3>改
db.info.update({条件},{$set:{name:18}})(同样官方推荐使用下面两种)
db.info.updateOne({条件},{$set:{name:18}})
db.info.updateMany({条件},{$set:{name:18}})
4>查
db.info.findOne({条件]})
db.info.find({条件})
db.info.find().pretty()格式化显示结果
6、常用条件
$lt #某个字段小于某个值 db.info.find({'age':{'$lt',20}}) ---->查询年龄小于20的所有结果
$gt #大于,$gte #等于,$lte#等于,$eq #等于,$ne #不等于,用法与上面一样
$in ##查询值在某一个范围内 db.info.find({'age';{'$in':[20,30]}}),查询年龄在20到30这个范围内的结果
$nin ##不在某一个范围内
$regex #正则匹配 db.info.find({'name';{'$regex':'^二*'}}) 查询名字以二开头的所有名字
$exists #判断某个字段是否存在 db.info.find({'name';{'$exists',True}})
$type #类型判断 db.info.find({"title" : {$type : 2}},#判断title是否为字符串
详细类型对应查考如下连接
https://www.runoob.com/mongodb/mongodb-operators-type.html
$text #文本查询 db.info.find('$text':{'search':'huahua'}),查询文本类型字段中包含哈哈的文档
$高级条件查询 db.info.find({'$where':'obj.age>18'}),查询年龄大于18的文档
({条件,条件} 表示两个或多个条件同时成立
({'$or':[{条件},{条件}]})表示至少一个成立
{'hoppy':{'$all:[0,1,2,3]}}当hoppy的值为[0,1,2,3]的子集时,查询成功
7、一些修改器
$修改器
$set 设置或者添加值
$unset 删除某一个字段
db.info.update{{条件},'$unset':{'age':1}}
$inc 引用增加
db.info.update{{条件},'$inc':{'age':1}}
array操作
$push 在array中追加一个新的元素
db.info.updateOne({条件,{'$push':{array:10}}})
$pull 在array中删除一个元素
db.info.updateOne({},{'$pull':{arry:10}})
$pop 在array中,如果为-1 则从前往后删,如果为1则从后往前删
db.info.updateOne({},{'$pop':{arry:1}})
db.info.updateOne({},{'$pop':{arry:-1})
修改里面array内值为5的值
db.db.info.updateOne({array:5},{'$set':{'arry.$':1}})#必须给定索引位置,$为查找到的那一个元素
object操作
db.info.updateOne({name:'huahua'},{'$inc':{'map.weight':-1}})
8、其他操作
count()计算表内数据总数---db.info.count()
limit() 查询几条数据---db.info.limit(5)
skip() 跳过几条数据---db.info.skip(5)
sort ()排序 ----db.info..sort({'age':1}) -- (按照年龄从小到大排序(1:代表升序)(-1:代表降序))
limit+sort+skip
db.info.limit(5).skip(5).sort()
优先级最高的是sort
其次为 skip
最低是 limit
9、创建索引,加快查询速度
(1)为什么要创建索引
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
(2)创建索引
db.collection.createIndex(keys, options) ##语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可
db.info.createIndex({"title":1})
以上就是MongoDB基本操作的讲解。相信大家看完教程对MongoDB有了一个大致的了解,还想学习更多数据库的知识,可以上博学谷在线学习。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
如何学习电脑程序?菜鸟入门须知
在当下这个互联网高速发展的时代,许多人通过学习电脑程序,突破了人生职业发展的限制。正如网上的段子说的那样,人改变命运的机会有两次,一次是高考,另一次就是进入IT行业。虽然段子表述得过于夸张,但在一定程度上也反映了IT行业目前蒸蒸日上的发展前景。对于想要入门编程的菜鸟来说,应该如何学习电脑程序呢?下面我们来详细看一看学习的指南。
7148
2020-01-10 11:30:52
Activity生命周期的知识点详解
在掌握Android应用开发的学习过程中,Activity生命周期相关知识点是必须掌握的基础内容。本文将会为大家详解Activity生命周期的有关知识,带大家了解什么是Activity生命周期,生命周期的流程以及四个状态,最终达到帮助大家完整掌握Activity用法的目的。下面就让我们一起来学习一下Activity的生命周期吧!
4509
2020-02-04 15:39:14
少儿编程有必要学吗?
随着社会的不断进步,人们的消费水平和生活水平都不断提高,越来越多的家长愿意花费更多的金钱和精力投入到对孩子的培养中。而在各种少儿培训中,除了舞蹈、美术、音乐等传统兴趣培训意之外,“少儿编程”也被人们更多关注。儿童编程在把计算机编程融合孩子兴趣的同时,加强孩子思维能力的锻炼,学习编程语言,可以锻炼孩子的逻辑思维
5950
2020-05-22 14:42:07
什么是网络编程?它是做什么的?
什么是网络编程?它是做什么的?简单解释一下,网络编程就是两台设备之间进行数据交换,最终到达通信的目的。要想深入的了解网络编程,我们必须弄清楚IP地址、端口号和网络协议这三者的概念,本文将会用最通俗易懂的例子,帮助大家理解网络编程的概念。
10554
2020-08-07 10:28:26
9月份的数据库排名来啦!速来围观
近期,DB-Engines发布了本年度9月份的数据库排名情况,这份榜单分析主要为数据库相关从业人员提供一个技术方向的参考,DB-Engines的数据库排名是根据当前数据库的流行程度进行排名,排名每月更新一次,具体有如下几个维度:
2925
2021-09-10 17:13:09