共计 3033 个字符,预计需要花费 8 分钟才能阅读完成。
什么是 MongoDB
以下摘自百度百科:
MongoDB 是一个基于分布式文件存储的数据库。由 C ++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。
非关系数据库
NOSQL 泛指非关系型数据库,英文全称为 Not Only SQL,以下摘自百度百科:
随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
MongoDB 的优势
- 容易扩展,去掉关系型数据库的关系特性;
- 大数据量,高性能,具有非常高的读写特性;
- 灵活的数据模型,NOSQL 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
安装 MongoDB
MongoDB 官方下载地址:https://www.mongodb.com/download-center/community
我选择的是 MSI 格式的安装包,下载完成后,安装界面如下图,按照提示进行安装即可。
MongoDB 是以命令行的方式进行操作,如果初学者不习惯这种方式,可以安装 MongoDB 的可是化工具,我选择的是 Robo 3T,官方下载地址:https://robomongo.org/
我选择的是下载 exe 格式的安装文件,安装界面如下图,按照提示安装即可。
MongoDB 的基本操作
MongoDB 的中文版教程地址:http://www.runoob.com/mongodb/mongodb-tutorial.html
1. 创建、查看、删除数据库
- 查看当前的数据库:
db
- 查看所有的数据库:
show dbs
- 切换数据库:
use 数据库名称
- 删除当前的数据库:
db.dropDatabase()
2. 创建、查看、删除集合
- 手动创建集合:
db.createCollection(name,options)
参数说明:name
:要创建的集合的名称option
:可选参数
db.createCollection("praite")
db.createCollection("praite",{capped:true,size:10})
参数说明:capped
:默认为 false,如果设置为 true,则创建固定大小的集合,当达到最大值时,会自动覆盖最早的文档。当设置为 true 时,必须指定 size
参数。size
:为固定大小的集合指定一个最大值,以字节计。
- 不手动创建集合:向不存在的集合第一次加入数据时,集合会被自动创建出来。
- 查看集合:
show collectinos
- 删除集合:
db. 集合名称.drop()
3. 插入数据
- 语法:
db. 集合名称.insert(document)
db.pirate.insert({name:"路飞",gender:1,hometown:"风车村",age:19})
db.pirate.insert({_id:"20181126",name:"路飞",gender:1,hometown:"风车村",age:19})
显示结果如下:
- 插入文档时,如果不指定
_id
参数,MongoDB 会为文档分配一个唯一的ObjectID
,如果_id
存在则会报错 如下图所示。
4. 保存数据
- 语法:
db. 集合名称.save(document)
- 与
insert
不同的是,如果文档的_id
存在则修改,如果文档的_id
不存在则添加,如下图所示。
db.pirate.save({_id:"20181126",name:"山治",gender:0,hometown:"杰尔马 66 王国",age:21})
db.pirate.save({_id:"2018112601",name:"布鲁克",gender:1,hometown:"西海",age:90})
5. 更新数据
- 语法:
db. 集合名称.update(<query>,<update>,{multi:<boolean>})
参数说明:query
:update 的查询条件update
:update 的对象和一些更新的操作符multi
:可选,默认为 false,表示只更新找到的第一条记录,若值为 true 表示把满足条件的文档全部更新。
db.pirate.update({name:"路飞"},{name:"蒙奇·D·路飞"})
db.pirate.update({name:"索隆"},{$set:{name:"罗罗诺亚·索隆"}})
db.pirate.updata({gender:1},{$set:{gender:0}},{multi:true})
- 注意:
$set
表示只更新响应的值,如下图所示。
6. 删除数据
- 语法:
db. 集合名称.remove(<query>,{justOne:<boolean>})
参数说明:query
:可选,删除的文档的条件justOne
:可选,过个设为 true 或 1,则只删除一个文档
db.pirate.remove({age:19})
7. 查询数据
- 语法:
db. 集合名称.find({条件}) - 如果要是显示内容美观化,可以使用 pretty()方法:
db. 集合名称.find({条件}).pretty()
db.pirate.find({age:17}).pretty()
- 比较运算符
- 小于:
$lt
- 小于等于:
$lte
- 大于:
$gt
- 大于等于:
$gte
- 不等于:
$ne
db.pirate.find({age:{$gte:20}})
- 小于:
- 逻辑运算符
- AND:在 find()方法中传入多个键 (key),每个键(key) 以逗号隔开,语法如下:
db. 集合名称.find({key1:value1, key2:value2})
- OR:使用关键字
$or
,语法如下:
db. 集合名称.find({$or:[{key1:value1}, {key2:value2}]})
- AND 和 OR 可以一起使用:
db.pirate.find({$or:[{age:{$gte:20}}, {gender:1}],hometown:"西海"})
- limit()和 skip()
- limit()方法语法:
db. 集合名称.find().limit(NUMBER)
- skip()方法语法:
db. 集合名称.find().skip(NUMBER)
- limit()方法和 skip()方法可以一起使用:
db.pirate.find().skip(4).limit(2)
8. 排序
- 语法:
db. 集合名称.find().sort({字段名称:1, 字段名称:-1,...})
参数说明:1 表示升序,- 1 表示降序
db.pirate.find().sort({age:1,gender:-1})
9. 统计个数
- 语法:
db. 集合名称.find({条件}).count()
db. 集合名称.count({条件})
db.pirate.find({gender:0}).count()
db.pirate.count({age:{$gt:20},gender:1})
结语
- 本篇主要介绍了 MongoDB 的基本操作方法,包括创建、插入、保存、查询等方法。
- 本篇内容适合刚接触 MongoDB 的学习者。
- 最后,感谢大家的阅读。
: