Windows下安装和配置
首先到官网下https://www.mongodb.com/
在下载好的文件中3.6目录下新建立一个data文件夹,在其中新建立db和log文件,在log中建立文件mongo.log用于存储一些文件和配置,接下来管理员模式下打开命令行中,打开到bin目录下,输入mongod --bind_ip 0.0.0.0 --logpath C:\MongoDB\Server\3.6\data\log(你安装的mongo.log文件目录) --logappend --dbpath C:\MongoDB\Server\3.6\data\db(你之前建立的db文件夹目录)--port 27017 --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
配置出一个windows服务,之后建立一个开启mongodb.bat文件,内容为
@echo.服务启动......
@echo off
@net start MongoDB
@echo off
echo.启动完毕!
pause
此后每次用管理员运行这个文件,就自动开启服务,之后在命令行下cd到bin目录下,键入mongo,进入mongodb数据库中
介绍
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
mongodb shell
它是一个互动的JavaScript接口MongoDB。您可以使用mongoshell来查询和更新数据以及执行管理操作。
一般我们可以通过这个API接口来输入命令控制数据库。而之前的一些设置就是为这个接口配置本地主机的端口和服务环境
其中的一些数据库增删减查的基本操作参考官方文档:https://docs.mongodb.com/manual/reference/mongo-shell/
数据库的数据模型
例如:把用户数据文档和用户地址数据文档分开,通过引用文档的 id 字段来建立关系
{
"_id":ObjectId("52ffc33cd85242f436000001"),
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin",
"address_ids": [
ObjectId("52ffc4a5d85242602e000000"),
ObjectId("52ffc4a5d85242602e000001")
]
}
上例中嵌入式结构表示为下图
"_id":ObjectId("52ffc33cd85242f436000001"),
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin",
"address": [
{
"building": "22 A, Indiana Apt",
"pincode": 123456,
"city": "Los Angeles",
"state": "California"
},
{
"building": "170 A, Acropolis Apt",
"pincode": 456789,
"city": "Chicago",
"state": "Illinois"
}]
}
mongodb的基本概念
GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在files集合中。
数据库的特色
索引
特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构,方便查找
聚合
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果
管道
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
对于MongoDB的聚合管道,是将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
复制
MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。还允许您从硬件故障和服务中断中恢复数据。
切片
在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。