什么是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安装简单。
历史 2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。
- 2012年05月23日,MongoDB2.1 开发分支发布了! 该版本采用全新架构,包含诸多增强。
- 2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库。
- 2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及bug修复。
- 2013年08月20日,MongoDB 2.4.6 发布,是目前最新的稳定版。
MongoDB 下载
你可以在mongodb官网下载该安装包,地址为: http://www.mongodb.org/downloads。MonggoDB支持以下平台:
- OS X 32-bit
- OS X 64-bit
- Linux 32-bit
- Linux 64-bit
- Windows 32-bit
- Windows 64-bit
- Solaris i86pc
- Solaris 64
MongoDB 工具
有几种可用于MongoDB的管理工具。
监控
MongoDB提供了网络和系统监控工具Munin,它作为一个插件应用于MongoDB中。
Gangila是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中。
基于图形界面的开源工具 Cacti, 用于查看CPU负载, 网络带宽利用率,它也提供了一个应用于监控 MongoDB 的插件。
GUI
- Fang of Mongo – 网页式,由Django和jQuery所构成。
- Futon4Mongo – 一个CouchDB Futon web的mongodb山寨版。
- Mongo3 – Ruby写成。
- MongoHub – 适用于OSX的应用程序。
- Opricot – 一个基于浏览器的MongoDB控制台, 由PHP撰写而成。
- Database Master — Windows的mongodb管理工具
- RockMongo — 最好的PHP语言的MongoDB管理工具,轻量级, 支持多国语言.
MongoDB 概念解析
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
MongoDB的常用命令
这里只有部分常用命令,具体可以去:MongoDB中文网
-
查询数据:
- find:查询一个集合中的文档。
- findOne:查询符合条件的第一个文档。
- count:统计符合条件的文档数量。
- distinct:获取指定字段的不重复值。
-
插入数据:
- insertOne:向集合中插入一个文档。
- insertMany:向集合中插入多个文档。
-
更新数据:
- updateOne:更新符合条件的第一个文档。
- updateMany:更新符合条件的所有文档。
- $set:用于设置文档中的字段值。
-
删除数据:
- deleteOne:删除符合条件的第一个文档。
- deleteMany:删除符合条件的所有文档。
- drop:删除整个集合。
-
索引操作:
- createIndex:创建索引。
- dropIndex:删除索引。
- explain:解释查询执行计划。
-
聚合操作:
- aggregate:执行聚合操作,如统计、分组、排序等。
-
数据库操作:
- show dbs:显示所有数据库。
- use:切换到指定数据库。
- db.dropDatabase():删除当前数据库。
-
条件查询:
- $eq:等于
- $ne:不等于
- $gt:大于
- $gte:大于等于
- $lt:小于
- $lte:小于等于
- $in:匹配数组中的任意一个元素
- $nin:不匹配数组中的任意一个元素
- $and:同时满足多个条件
- $or:满足任意一个条件
- $not:不满足指定条件
-
排序和限制查询结果:
- sort:按指定字段排序结果
- limit:限制查询结果数量
- skip:跳过指定数量的文档
-
数据备份和恢复:
- mongodump:备份数据库
- mongorestore:恢复数据库
-
集合操作:
- createCollection:创建集合
- dropCollection:删除集合
- renameCollection:重命名集合
-
用户管理:
- createUser:创建用户
- updateUser:更新用户信息
- dropUser:删除用户
月下饮茶,念卿天涯