MongoDB官网:
https://www.mongodb.org
官网的下载页面:
https://www.mongodb.org/downloads
官方文档关键词索引页面:点击这里。
MongoDB中文社区:
http://www.mongoing.com
mongodb基础知识
数据库名可以是满足以下条件的任意UTF-8字符串:
- 不能是空字符串( "" )。
- 不得含有
空格
、.
、$
、/
、\\
和\\0
(空字符)。 - 应尽量全部小写,因为数据库名并不区分大小写。
- 不能为空,且少于64个字符。
- 在windows下最好别用
/\. "$*<>:|?
中的任何一个,更不允许包含null。 - 在类unix的系统下最好别用
/\. "$
,当然也包括null。
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
- admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
- local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
- config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
集合名必须以下划线或字母开头,且禁止:
- 包含
$
。 - 包含空字符串,即""。
- 包含
null
字符。 - 以
system.
前缀开头(系统保留使用)
域名field不允许包含
.
或null字符,而且不能以美元符号$
开头
关于operator,点击MongoDB(operator)
关于集合的操作,点击MongoDB(operation)
关于MongoDB的引擎,点击MongoDB(引擎)
关于索引部分,点击MongoDB(index)
关于聚合部分,点击MongoDB(聚合)
差不多上手了之后,一些存在的细节问题只能在实际操作中发现。可以选pymongo来实操了,基本的入门大概是这样的:pymongo日记
收集来的关于MongoDB的优劣的讨论:
收集文章
MongoDB的主要特点
(1)文件存储格式为Bson
,使用易于掌握和理解的Json风格语法。相对Json来说,Bson拥有更好的性能,主要表现为更快的遍历速度、操作更简易、增加了额外的数据类型。
(2)模式自由,支持嵌入子文档和数组,无需事先创建数据结构,属于逆规范化的数据模型,有利于提高查询速度。
(3)动态查询,支持丰富的查询表达式,使用Json形式的标记,可轻易查询文档中内嵌的对象和数组及子文档。
(4)完整的索引支持,包括文档内嵌对象和数据,同时还提供了全文索引方式,MongoDB的查询优化器会分析查询表达式,并生成一个高效的查询计划。
(5)使用高效的二进制数据存储,适合存储大型对象(如高清图片、视频等)。
(6)支持多种复制模式,提供冗余及自动故障转移。支持Master-Slave、Replica Pairs/Replica Sets、有限Master-Master模式。
(7)支持服务端脚本和Map/Reduce,可以实现海量数据计算,即实现云计算功能。(8)性能高、速度快。在多数场合,其查询速度对于MySQL要快的多,对于CPU占用非常小。部署很简单,几乎是零配置。
(9)自动处理碎片,支持自动分片功能实现水平扩展的数据库集群,可以动态添加或移除节点。
(10)内置GridFS,支持海量存储。
(11)可通过网络访问,采用高效的MongoDB网络协议,在性能方面要优于http或Rest协议。
(12)第三方支持丰富,MongoDB社区活跃,越来越多的公司和网站在生产环境中使用MongoDB进行技术架构优化,同时由10gen公司官方提供强大技术支持。
MongoDB的适用场景
MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。
(1)网站数据:MongoDB非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
(2)缓存:由于性能很高,MongoDB也适合作为信息基础设施的缓存层。在系统重启之后,由MongoDB搭建的持久化缓存层可以避免下层的数据源过载。
(3)大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
(4)高伸缩性的场景:MongoDB非常适合由数十或数百台服务器组成的数据库。MongoDB的路线图中已经包含对MapReduce引擎的内置支持。
(5)用于对象及JSON数据的存储:MongoDB的Bson数据格式非常适合文档化格式的存储及查询。