关于介绍以及缺点等网上介绍很多,这里记录一下我遇到的问题:

首先就是使用yum install安装后的mongodb无法设定开机启动。其次,即使修改了/etc/monggdb.conf文件的相关路径,运行时还必须手动指定dbpath参数才可运行。

于是按照官方指南说明的方法,添加了mongodb的源,安装yum install mongo-10gen mongo-10gen-server之后chkconfig mongod on才能设定成为开机启动。不过使用service mongod start启动、停止、重起服务会出现假死。但是不影响使用。

配置文件为:/etc/mongod.conf

初始化脚本为:/etc/rc.d/init.d/mongod

数据存储路径:/var/lib/mongo/

日志文件存储路径:/var/log/mongo/

守护进程运行用户为:mongod

任何数据最最基本的操作不外乎增删改查:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
> db.test.save({a:1})
> db.test.find()
{ "_id" : ObjectId("530d3ec2d93e8e1410a1caf6"), "a" : 1 }
> doc = {author:'xsy',created: new Date('02/26/2014')}
{ "author" : "xsy", "created" : ISODate("2014-02-25T16:00:00Z") }
> db.test.insert(doc)
> db.test.find()
{ "_id" : ObjectId("530d3ec2d93e8e1410a1caf6"), "a" : 1 }
{ "_id" : ObjectId("530d3f1ed93e8e1410a1caf7"), "author" : "xsy", "created" : ISODate("2014-02-25T16:00:00Z") }
> db.test.update({author:'xsy'},{$inc:{check:400}})
> db.test.find()
{ "_id" : ObjectId("530d3ec2d93e8e1410a1caf6"), "a" : 1 }
{ "_id" : ObjectId("530d3f1ed93e8e1410a1caf7"), "author" : "xsy", "check" : 400, "created" : ISODate("2014-02-25T16:00:00Z") }
> db.test.remove({a:1})删除
> db.test.find()
{ "_id" : ObjectId("530d3f1ed93e8e1410a1caf7"), "author" : "xsy", "check" : 400, "created" : ISODate("2014-02-25T16:00:00Z") }
>

更换数据库:默认情况下启动mongodb shell后自动使用的是test库,想换的话使用命令 use newname:

1
2
3
4
5
6
7
> use mydb
switched to db mydb
> db.mydb.save({a:2})
> db.test.find()
> db.mydb.find()
{ "_id" : ObjectId("530d498ed93e8e1410a1caf8"), "a" : 2 }
>

如上所示,当切换(或者说新建)数据库mydb后,再查询test数据是不显示的。而数据库目录下也多处了mydb.ns、mydb.0等相关文件。

看了增删改查的操作后,发现mongodb的操作更类似于编程语言,操作都是对于函数的调用,条件则是函数的参数。而且居然还支持正则表达式的查询方式,甚至for\foreach这两种循环都有。带$符号的则是关键字。

啊哈,mongodb的存储过程居然是用js写,书到用时方恨少阿!!真得抽时间学学JS了…

继续看,发现可以直接把文件存放在mongo数据库中,用到了gridfs。突然想起,mysql中有一种类型叫做blob,用于存放文件。

要在python中操作mongodb,需要一个pymongo,文档:http://api.mongodb.org/python/current/tutorial.html