- 什么是MongoDB ?
- 主要特点
- 安装MongoDB
- mongodb指令
- MongoDB导出表格
- MongoDB导出json数据
- MongoDB导入json数据
- MongoDB概念解析
- MongoDB Map Reduce
什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
主要特点
- MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
- 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName=”Sameer”,Address=”8 Gandhi Road”)来实现更快的排序。
- 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
- 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
- Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
- MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
- Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
- Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
- Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
- GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
- MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
- MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
- MongoDB安装简单。
安装MongoDB
MongoDB卡住问题
注意:最后一步时,左下角的勾没有去掉,mongodb compass是图形化管理界面,下载它需要很久
http://www.runoob.com/mongodb/mongodb-window-install.html
MongoDB 下载
MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community
创建数据目录
MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。请注意,数据目录应该放在根目录下
D:\data\db
命令行下运行 MongoDB 服务器
为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。
D:\mongodb\bin\mongod --dbpath D:\data\db
连接MongoDB
我们可以在命令窗口中运行 mongo.exe 命令即可连接上 MongoDB,执行如下命令:
D:\mongodb\bin\mongo.exe
配置 MongoDB 服务
管理员模式打开命令行窗口,创建目录,执行下面的语句来创建数据库和日志文件的目录
mkdir c:\data\db mkdir c:\data\log
创建配置文件
创建一个配置文件。该文件必须设置 systemLog.path 参数,包括一些附加的配置选项更好。
例如,创建一个配置文件位于 C:\mongodb\mongod.cfg,其中指定 systemLog.path 和 storage.dbPath。具体配置内容如下:
systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db
安装 MongoDB服务
通过执行mongod.exe,使用–install选项来安装服务,使用–config选项来指定之前创建的配置文件。
C:\mongodb\bin\mongod.exe --config "C:\mongodb\mongod.cfg" --install
要使用备用 dbpath,可以在配置文件(例如:C:\mongodb\mongod.cfg)或命令行中通过 –dbpath 选项指定。
如果需要,您可以安装 mongod.exe 或 mongos.exe 的多个实例的服务。只需要通过使用 –serviceName 和 –serviceDisplayName 指定不同的实例名。只有当存在足够的系统资源和系统的设计需要这么做。
启动MongoDB服务
net start MongoDB
关闭MongoDB服务
net stop MongoDB
移除 MongoDB 服务
C:\mongodb\bin\mongod.exe --remove
mongodb指令
学习mongodb:首先运行服务器,用来开启mongodb数据库,再运行客户端,客户端可以用来查询数据。mongodb常用的一些指令如下所示。
查找所有数据库:show dbs
连接到指定数据库:use beaglebone
查看当前连接的数据库:db
展示集合:show collections
查找指定集合的所有数据: db.volts_3.find() db.tags_3.find()
查找第一条数据:db.volts_3.findOne()
查找指定属性的数据:db.volts_5.find({“device_no”:1})
修改指定数据:db.tags_5.update({“_id”:ObjectId(“5bfa621b89f938208ca039da”)},{$set:{“tag”:”discard”}})
删除这个数据库中的集合:db.volts_6.drop()
remove函数中添加删除条件:db.集合名.remove({})
MongoDB导出表格
进入mongoDB的bin目录下打开cmd运行如下代码:
./mongoexport -d 数据库名 -c 集合名 –csv -f 要导出的字段名,每个字段名以逗号隔开 -o 具体地址(如果不加具体地址,则默认为导出到bin目录下)/要导出的文件名.csv
例如:
mongoexport -d beaglebone -c volts_6 -f _id,voltage,device_no,time –csv -o “C:/Users/Zheng Cheng/Desktop/vibrate.csv”
mongoexport -d beaglebone -c tags_5 -f _id,inittime,termtime,tag –csv -o “C:/Users/Zheng Cheng/Desktop/tag.csv”
MongoDB导出json数据
进入mongoDB的bin目录下打开cmd运行如下代码:
mongoexport -d beaglebone -c volts_5 -o “C:/Users/Zheng Cheng/Desktop/volts_5.json”
mongoexport -d beaglebone -c tags_5 -o “C:/Users/Zheng Cheng/Desktop/tags_5.json”
MongoDB导入json数据
进入mongoDB的bin目录下打开cmd运行如下代码:
mongoimport –db beaglebone –collection tags_4 –type json –file “D:\Offer\BBDetection\data/tags_4.json”
mongoimport –db beaglebone –collection volts_4 –type json –file “D:\Offer\BBDetection\data/volts_4.json”
MongoDB概念解析
document:文档对象,等同于关系型数据库table中的一行记录
field: 键值对,等同于关系型数据库中table的一个column
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
通过下图实例,我们也可以更直观的了解Mongo中的一些概念:
MongoDB Map Reduce
个人总结:map映射,表示把数据形成一对一的键值对,而reduce规约,表示把相同键的数据合并到一起。
http://www.runoob.com/mongodb/mongodb-map-reduce.html
Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。
MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。
MapReduce 命令
以下是MapReduce的基本语法:
>db.collection.mapReduce(
function() {emit(key,value);}, //map 函数
function(key,values) {return reduceFunction}, //reduce 函数
{
out: collection,
query: document,
sort: document,
limit: number
}
)
使用 MapReduce 要实现两个函数 Map 函数和 Reduce 函数,Map 函数调用 emit(key, value), 遍历 collection 中所有的记录, 将 key 与 value 传递给 Reduce 函数进行处理。
Map 函数必须调用 emit(key, value) 返回键值对。
参数说明:
- map :映射函数 (生成键值对序列,作为 reduce 函数参数)。
- reduce 统计函数,reduce函数的任务就是将key-values变成key-value,也就是把values数组变成一个单一的值value。。
- out 统计结果存放集合 (不指定则使用临时集合,在客户端断开后自动删除)。
- query 一个筛选条件,只有满足条件的文档才会调用map函数。(query。limit,sort可以随意组合)
- sort 和limit结合的sort排序参数(也是在发往map函数前给文档排序),可以优化分组机制
- limit 发往map函数的文档数量的上限(要是没有limit,单独使用sort的用处不大)
以下实例在集合 orders 中查找 status:”A” 的数据,并根据 cust_id 来分组,并计算 amount 的总和。