概述 安装过程可以参考官网,文档很详细.
ubuntu官网源有提供mongodb安装,但是一般版本都比较落后,更新不及时。 所以可以采用mongodb提供的安装源,安装最新的mongodb.
mongodb只为64-bit的长期支持版本提供安装源,即ubuntu12.04/ubuntu14.04. 其他版本也许可以使用,但是不推荐。
mongodb官网有5个主要的包:
mongodb-dev. meta-pacage. 自动安装其他四个包. mongodb-org-server. mongod-daemon以及配置文件/init脚本 mongodb-org-mongos. mongos-daemon. mongodb-org-shell. mongo-shell mongodb-org-tools. mongoimport/mongodump/bsondump/mongoexport/retore/stat/perf/oplog等工具. 安装过程 具体过程如下
# import mongodb GPK key sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 # add source # 12.04 echo "deb http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list # 14.04 echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list sudo apt-get update sudo apt-get install -y mongodb-org 如果想安装特定版本mongodb
# 如果只mongodb-org=3.2.0,会安装最新版本mongodb. 后面的必须也制定。 sudo apt-get install -y mongodb-org=3.
Jan 8, 2016
1 min read
TODO
项目地址:: TODO ref
mongodb本身是无模式的,但是使用时都要在application层实现模式约束.
mongoengine是个mongodb ORM库。已相当成熟稳定, 使用广泛, 开发活跃. 性能相对也不错(可以参见项目下的bench).
使用下来发现mongoengine还是很不错的库,但是有部分特性使用起来并不方便.
mongoengine问题 索引问题 索引应该跟document分开.并且有自动化建立和删除的command.
把索引定在Document/meta/indexes里很糟糕:
写法很乱,不易管理。
有时会失效,没有建立对应的索引
listField校验问题 listField没法做长度限制 set/sortset/max-len list/ sort-list等结构没有实现
不支持自定义字段验证/文档级验证 pre_save/after_save hooks 不可存储的EmbdDocumment TODO 待考虑
可扩展的Document TODO 待考虑
TODO: 来源
索引可以加快读取操作,但是会降低写入和更新操作, 一般要根据文档的读写比决定是否使用索引
可以使用hint和explain来比较和测试索引的实际效果, 但要注意mongodb热数据缓存带来的影响
对于较小的集合,使用索引查询反而会让查询更慢, 因为一次大的顺序读变成了多次随机读
nosqlfan是个学习和找问题的好地方
mongodb索引简介 基本操作 索引一般使用B+树结构,来优化查询操作, 建立的索引应该符合查询要求,才能发挥作用
db.things.ensureIndex({j:1}) 默认单列/文档/组合索引 每个集合都会有个默认索引 _id ,该字段不能删除
单列索引可以是独立字段,也可以是嵌套文档字段
建立文档索引会导致 必须使用严格匹配的查询才能返回结果,一般用组合索引替代 TODO
稀疏索引的概念与sql中的稀疏索引概念不同
mongodb不会为字段值不存在的文档加入索引,null值不能被查出
唯一索引
db.ensureIndex({j:1}, {unique: true}) db.ensureIndex({j:1}. {unique: true, dropDups: true}) 特殊索引 mongodb支持2d索引,用于地理位置服务。
mongodb支持text全文索引,但是功能较弱.
须注意:
mongodb 2d索引使用B+树结构,不会造成性能上的问题。勿轻信性能问题 http://blog.nosqlfan.com/html/1811.html
mongodb 2d索引返回的距离不会实际距离,而是坐标点距离. 根据实际情况做 /111, 或是/65535处理