MongoDB(http://www.mongodb.org)是一个开源的文档型NoSQL数据库,使用C++语言编写,主要有如下特性:
- 面向JSON格式文档存储
- 完整的索引支持
- 复制和高有效性
- 自动横向扩展
- 丰富的查询方式
- 快速的原子更新操作
- Map/Reduce
- GridFS:不用担心文件存储的增长了
MongoDB应用:GPS位置信息,,,等,本人还没在其他地方应用还不知道,呵呵。
安装MongoDB
官方有很详细的说明:http://docs.mongodb.org/manual/installation/
Ubuntu
$ sudo apt-get install mongodb
Ubuntu中会被安装一个自启动服务mongodb
$ sudo /etc/init.d/mongodb start
Mac OS X
$ sudo port install mongodb
Mac OS X 安装完成后,使用mongod来启动
$ mongod &
MongoDB默认占用两个端口:27017(服务端口)和28017(使用浏览器打开http://127.0.0.1:28017,它提供MongoDB的运行状态的查询)
使用MongoDB
Mongo中以数据库->Collection方式组织数据。Collection是一个文档集合,相当于SQL中的表。Mongo中的数据库无需事先建立,当针对Collection插入数据时,会自动建立数据库和Collection。
Mongo客户端工具
客户端工具默认链接test库。 Ubuntu
$ mongo MongoDB shell version: 2.4.4 connecting to: test >
Mac OS X
$ mongo MongoDB shell version: 2.4.4 connecting to: test >
MongoDB基本操作
获取帮助
> help
查看数据库
> show dbs
切换当前数据库
use mydbname
插入数据到Collection:如果不存在会自动建立DB和Collection,下面语句中的locations是一个Collection用于存放位置信息。
> db.locations.insert({tm_id:"862118021471732",lon_direct:"E",lon:108.895,lat_direct:"N",lat:34.241, speed:0.589, date:new Date("2013-09-26 12:12:05.002")})
统计和查找
查询Collection中的文档总数
> db.locations.count()
查询Collection中的文档
> db.locations.find()
查询Collection并排序:按照日期倒序,-1表示倒序,1表示顺序
> db.locations.find().sort({date:-1})
根据条件查找,并排序
> db.numbervalues.find({type:3033}).sort({number:-1}).limit(5)
删除记录
删除所有记录
> db.password.remove({})
删除指定记录
> db.locations.remove({date:{$gt:ISODate("2015-06-03T12:28:34Z")}}) > db.locations.remove({dev_id:"000003013043210009", date:{$gt:new Date()}})
管理MongoDB
使用MongoDB进行应用开发
MongoDB支持大部分流行的开发语言。
MongoDB和Java
- 文档
Java Language Center http://docs.mongodb.org/ecosystem/drivers/java/
- 驱动和开发库
Mongo Java Driver:已经放到Maven库中了,http://central.maven.org/maven2/org/mongodb/mongo-java-driver/
MongoDB和Python
- 文档
Python Language Center http://docs.mongodb.org/ecosystem/drivers/python/
- 驱动和开发库
PyMongo:Python的Mongo驱动库,https://pypi.python.org/pypi/pymongo/
MongoEngine:Python下用于MongoDB的ORM开发库,http://mongoengine.org