分类: 数据库开发技术
2011-10-16 16:11:42
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用,存储数据非常方便
MongoDB简介MongoDB是独立的数据库服务器,理论上讲,使用它的方式与使用关系型数据库如MySQL是相同的,建立连接,执行任务,最后关闭连接。
MongoDB是模式自由的,创建一个文档不需要事先告诉数据库有关数据的结构,直接存到数据库即可。
大多情况下,在MongoDB中查询数据只需要传给它一个JSON或指定数组即可,它会返回符合条件的文档。你可以忘掉数据库抽象层及ORM层,对于复杂的查询,可以传递Javascript,内部引擎会解析JS脚本。
MongoDB的易用可以有效的缩短开发时间,学习曲线平滑,可以应对多变的需求。
MongoDB的安装与配置选择二进制文件,下载地址:
注意:
解压到指定路径,并更改目录名称,比如:
tar zxvf mongodb-linux-x86_64-1.8.1.tgz -C /usr/local/ cd /usr/local mv mongodb-linux-x86_64-1.8.1 mongo 将可执行文件加入系统PATH ln -s /usr/local/mongo/bin/* /usr/local/bin/启动MongoDB服务器:
mkdir -p /data/db mongod --dbpath=/data/db --logpath=/var/log/mongo.log --logappend &连接MongoDB服务器:
mongo help # help查看帮助启动MongoDB服务器时可以传入配置文件,配置文件语法相当简单:
dbpath=/data/db logpath=/var/log/mongo.log logappend=true port=27017 fork=true auth=true 增加MongoDB用户通过mongo客户端连接MongoDB服务器,show dbs会发现有一个admin集合,我们在其中增加一个超级管理员:
db.addUser('root', 'root');停止MongoDB服务器,重新启动并增加auth参数:
mongod --dbpath=/data/db --logpath=/var/log/mongo.log --auth --logappend &此时再次通过mongo连接数据库,并切换到admin集合,show collections显示无权限了。
需要管理员登录:
db.auth('root', 'root'); show collections; # 已经可以显示admin集合的子集合了说明root用户的权限已经生效,如果要在指定的集合中增加用户,需要首先切换到admin集合并用超级管理员权限登录,再切换到指定集合,通过db.addUser增加该集合的用户。
基本操作mongo MongoDB shell version: 1.8.1 connecting to: test Fri May 27 23:10:54 [initandlisten] connection accepted from 127.0.0.1:56465 #5 >插入记录
> db.csser.insert({"name":"CSSer,关注web前端技术", "domain":"", "year":2011}) Fri May 27 23:14:53 [FileAllocator] allocating new datafile /data/db/test.ns, filling with zeroes... Fri May 27 23:14:53 [FileAllocator] done allocating datafile /data/db/test.ns, size: 16MB, took 0 secs Fri May 27 23:14:53 [FileAllocator] allocating new datafile /data/db/test.0, filling with zeroes... Fri May 27 23:14:53 [FileAllocator] done allocating datafile /data/db/test.0, size: 16MB, took 0 secs Fri May 27 23:14:53 [FileAllocator] allocating new datafile /data/db/test.1, filling with zeroes... Fri May 27 23:14:53 [conn5] building new index on { _id: 1 } for test.csser Fri May 27 23:14:53 [conn5] done for 0 records 0secs > Fri May 27 23:14:53 [FileAllocator] done allocating datafile /data/db/test.1, size: 32MB, took 0.016 secs查询记录
> db.csser.find() { "_id" : ObjectId("4ddfbfedec5ff262f3219a2e"), "name" : "CSSer,关注web前端技术", "domain" : "", "year" : 2011 }修改记录
> db.csser.update({"year":2011}, {$set:{"age":1}}) > db.csser.find() { "_id" : ObjectId("5ddfbfedec5ff262f3219a2e"), "age" : 1, "domain" : "", "name" : "CSSer,关注web前端技术", "year" : 2011 }删除记录
> db.csser.remove({"year":2011}) > db.csser.find() >