之前对于 MongoDB 的了解比较泛泛,也是因为在工作中使用的比较少的缘故,好吧就是没用过。。。最近工作上新项目使用的主要数据库为 MongoDB,那么正好系统的了解学习一下。
简介MongoDB 是一款为 Web 应用程序和互联网基础设施设计的数据库管理系统。MongoDB 的数据模型和持久化策略的设计目标是提供高读写吞吐量,在易于伸缩同时还能进行自动故障转移。
MongoDB 的主要特性:
文档数据模型 即时查询(无需预先定义系统接受的查询类型) 二级索引(B树) 备份复制 速度与持久性 数据库扩展MongoDB 与其他主流数据库的对比(图片来自《MongoDB 实战》)

使用场景
对于任何软件来说,它的使用场景往往才是技术选型时最为关注的,而 MongoDB 由于其具备的特性,适用的场景很多:
Web 应用程序 敏捷开发 分析和日志 缓存 可变的Schema 安装先创建数据目录
$ sudo mkdir -p /data/db $ sudo chown `id -u` /data/db还是老样子以 Mac 为例安装,简单的不行:
$ brew install mongodb然后全程自动化,然后就安好了。最后对 /usr/local/etc/mongod.conf 文件进行编辑,注释掉原默认信息,并添加如下配置:
dbpath=/data/db logpath=/usr/local/var/log/mongodb/mongo.log rest=true fork=true port=27017这样就安装完成了,其中 MongoDB 即可。
$ mongod -f /usr/local/etc/mongod.conf 基本的 CRUD 操作MongoDB 也提供了一个类似于 mysql Client 一样的 Shell,不过是一个 javascript Shell,只要对于 JS 基本语法了解使用起来很容易。
切换数据库命令和 MySQL 完全一致:
> use tutorial注:MongoDB 数据库和集合不需要显示创建,均都是在第一次插入文档时才会被创建。
插入操作 > db.users.insert({"username": "BPCoder"}) // 插入一条文档 > db.users.save({"username": "Yang"}) // 如果 _id 存在为更新,如果 _id 不存在为插入 删除操作 > db.users.remove({"username": "Yang"}) // 根据条件删除 > db.users.drop() // 删除集合以及它的全部索引 查询操作 > db.users.find() // 查询全部 > db.users.count() // 查询总条数 > db.users.find({"username": "Yang"}) // 根据条件查询 > db.users.find({"favorites.citys": "Shenyang"}) // 复杂结构匹配查询 > db.numbers.find({"num": {"$gt": 20, "$lt": 26}}) // 条件查询方式($lt 小于 & $gt 大于) 更新操作 > db.users.update({"username": "Yang"}, {$set: {"country": "China"}}, false, true) // 添加一个新的 country 属性(最后一个参数开启多项更新) > db.users.update({"username": "Yang"}, {$unset: {"country": 1}}) // 删除一个 country 属性 > db.users.update({"username": "BPCoder"}, {$set: {"favorites": {"citys": ["Shenyang", "Dalian"], "movies": ["嫌疑人 X 的献身"]}}}) // 复杂结构 > db.users.update({"username": "BPCoder"}, {$push: {"favorites.citys": "Tianjing"}}) // 单独添加一个元素(不保证唯一性) > db.users.update({"username": "BPCoder"}, {$addToSet: {"favorites.citys": "Tianjing"}}) // 单独添加一个元素(保证唯一性) 设置索引 > db.numbers.ensureIndex({"num": 1}) 获取该集合已经设置索引信息 > db.numbers.getIndexes() 基本管理命令 > show dbs // 获取数据库信息 > db.stats() // 获取数据库或者集合更底层的信息 (db.users.stats()) 总结简单整理对于 MongoDB 的安装及基本操作,后续会在深入了解后补充博客,那就到这了。。。