Chinaunix首页 | 论坛 | 博客
  • 博客访问: 536060
  • 博文数量: 142
  • 博客积分: 2966
  • 博客等级: 少校
  • 技术积分: 1477
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-07 22:37
文章分类

全部博文(142)

文章存档

2013年(3)

2012年(21)

2011年(53)

2010年(33)

2009年(32)

分类: 数据库开发技术

2011-10-16 16:11:42

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用,存储数据非常方便

MongoDB简介

MongoDB是独立的数据库服务器,理论上讲,使用它的方式与使用关系型数据库如MySQL是相同的,建立连接,执行任务,最后关闭连接。

MongoDB是模式自由的,创建一个文档不需要事先告诉数据库有关数据的结构,直接存到数据库即可。

大多情况下,在MongoDB中查询数据只需要传给它一个JSON或指定数组即可,它会返回符合条件的文档。你可以忘掉数据库抽象层及ORM层,对于复杂的查询,可以传递Javascript,内部引擎会解析JS脚本。

MongoDB的易用可以有效的缩短开发时间,学习曲线平滑,可以应对多变的需求。

MongoDB的安装与配置

选择二进制文件,下载地址:

注意

  • 32位平台下数据库文件有2G大小的限制,64位则没有限制。
  • OpenVZ的虚拟机目前对MongoDB支持仍不稳定,建议XEN虚拟机或独立服务器。

解压到指定路径,并更改目录名称,比如:

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() >
阅读(1409) | 评论(0) | 转发(0) |
0

上一篇:mysql取X月最后一天

下一篇:vim

给主人留下些什么吧!~~