最近刚接触MongoDB,把自己看的文档稍微整理一下。
一、MongoDB和SQL两者区别
1.1定义的区别
MongoDB:文档型数据库,可存储非结构化数据。其特点是:分布式数据库,可保存类似JSON格式的数据(在MongoDB中存储格式为BSON),开源免费。
SQL vs MongoDB
来源:http://www.runoob.com/mongodb/mongodb-window-install.html
二、MongoDB的使用
2.1 MongoDB环境配置
2.2.1 安装
参考网址:
http://www.runoob.com/mongodb/mongodb-window-install.html(菜鸟教程网址)
https://docs.mongodb.com/manual/(MongoDB官方英文文档)
2.2.2 运行
(1)进入MongoDB Shell界面
在命令提示符界面,进入MongoDB安装目录下的bin目录,输入mongo,就可以进入MongoDB Shell界面。
2.2.2 集合的建立和删除(Create Collection&Delete Collection)
(1) 语法
a) 创建集合
MongoDB 中使用 createCollection() 方法来创建集合。
语法格式:
db.createCollection(name, options)
参数说明:
name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项
b) 删除集合
语法格式:
db.collection.drop()
返回值:
如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。
(2) 实例
首先调用studentinfo数据库,然后使用db.createCollection()语句,创建一个名为CE的文档。
使用show Collections语句,查看所有存在的集合,然后删除CE集合,返回true则删除成功。
2.2.2 文档的插入(Insert)
参考网址:https://docs.mongodb.com/manual/tutorial/insert-documents/ (MongoDB的Insert方法的官方文档)
(1)语法
a) 插入单个文档
插入单个文档使用db.collection.insertOne()方法。举例如下:
db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
//插入一个名为inventory的集合。值可以用键值对的形式创建。
注意:该例子是在已经创建好的数据库中插入文档。
如果插入文档的时候没有指定_id域,MongoDB会向新的文档添加一个_id域,_id域相当于SQL中的主码,能够唯一标识一个文档,_id域值为ObjectId。

b) 插入多个文档
可以使用db.collection.insertMany() 方法。
c) 在未建立集合的时候插入文档
在 MongoDB 中,当你插入一些文档时,MongoDB 会自动创建集合。
> db.mycol2.insert({"name" : "菜鸟教程"})
> show collections
mycol2
(2)实例
向名为studentinfo的数据库中插入一条文档,域为name,值为“朱一龙”。
使用查询语句,查询到studentinfo的所有文档,可以看到MongoDB给文档自动添加了_id域,其值是ObjectId。

2.2.3 文档的查询(Query)
(1) 语法
a) 查询文档
MongoDB 查询数据的语法格式如下:
db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
b) 显示所有文档
使用db.collection.find( {} )语句,能够读取一个集合里的所有文档
如:MongoDB的db.inventory.find( {} ),相当于SQL中的SELECT * FROM inventory
如果需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
个人理解,可能有偏差。
MongoDB在非结构化的文档式大数据存储,相比SQL更有优势:
1)插入数据不需设置主键,没有SQL中对数据的约束(外键等),因此在存储大量的类JSON文档时更快速。
2)相比于SQL,MongoDB可存储形式多样的数据元素。
这是一个MongoDB文档的例子:
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
而在SQL中,单个字段不允许有类似 { h: 28, w: 35.5, uom: "cm" }的形式。
3)MongoDB具有弱一致性,支持最终一致性,与其他的NoSQL一样,多用于分布式存储系统。MongoDB自身的分片功能,有利于解决分布式存储系统的负载均衡问题。在插入数据时,数据之间没有类似SQL数据库系统的ACID特性,因此在插入大量的数据时速度比SQL快。一些爬虫也运用了MongoDB和Redis存储数据。
参考来源:
http://www.runoob.com/mongodb/mongodb-window-install.html(菜鸟教程网址)
https://docs.mongodb.com/manual/(MongoDB官方英文文档)
本文对比MongoDB与SQL数据库的特点,介绍MongoDB的环境配置、集合与文档的管理方法,强调MongoDB在非结构化大数据存储的优势。
449

被折叠的 条评论
为什么被折叠?



