目录
摘要
Document,Collection,特点,缺点,启动,停止,Shell
安装与运行
基本概念
- MongoDB 是面向文档的数据库。
- MongoDB 没有模式的概念,这意味着文档的键无需事先创建,也不会固定不变。
- MongoDB 中的文档 (Document) 类似关系数据库的行 (Row),集合( Collection) 类似关系数据库的表 (Table)。
- MongoDB 不支持关系数据库的 join 操作。
与关系型数据库比较
- 避免不需要的复杂性
- 更高的吞吐量、高并发
- 水平扩展能力
- 灵活的数据模型
特点
- 所用语言:C++
- 特点:保留了 SQL 一些友好的特性(查询,索引)。
- 协议: Custom, binary( BSON)
- Master/slave复制(支持自动错误恢复,使用 sets 复制)
- 内建分片机制
- 支持 javascript表达式查询
- 可在服务器端执行任意的 javascript 函数
- 在数据存储时采用内存到文件映射
- 对性能的关注超过对功能的要求
- 建议最好打开日志功能(参数 –journal)
- 在32位操作系统上,数据库大小限制在约2.5Gb
- 空数据库大约占 192Mb
- 采用 GridFS 存储大数据或元数据
缺点
Mongo 鼓励反模式(没有任何模式),这意味着任意类型的数据都可以被任意插入。这意味着如果发生拼写错误等问题时可能会导致几个小时的头痛。
运行
启动 MongoDB
mongod --dbpath <path> --port <port> --httpinterface --rest
启动前必须先确定数据库路径已经被创建且拥有读写权限。
默认的数据库路径为 /data/db
,端口为 27017
参数
dbpath
- 指定db路径port
- 指定端口号httpinterface
- 是否开启 http 服务,http 服务默认端口为 28017rest
- 是否允许通过 rest 接口进行访问
停止 MongoDB
第一种
在启动服务器的 shell 下键入 ctrl+c
第二种
use admin
db.shutdownServer()
第三种
mongod --shutdown -dbpath yourpath
运行 Javascript Shell
mongo
MongoDB Javascript shell 是完备的 Javascript 解释器,可以运行任何 Javascript代码。
帮助
输入以下命令均可以显示对应帮助
- help
- db.help()
- db.dbName.help()
显示源代码
调用方法时不加 ()
会显示 Javascript 源代码
请求和连接
MongoDB 为每一个数据库连接都建立了一个队列,存放这个连接的各种请求。这意味着两个 shell 是两个连接,一个 shell 中执行插入操作后,在另一个 shell 中并不能总是立刻返回结果。
第一个程序
建立 JavaScript 函数
function insertCity(name, population){
db.towns.insert({
name : name,
population : population
});
}
插入数据
insertCity("NewYork", 1000)
查询
db.towns.find()