MongoDB 的简单使用

之前稍微接触了一下MongoDB, 这里简单总结一下一些简单实用的操作(唉, 不知道有没有机会可以接触到复杂的使用情况).

MongoDB是个文档型的非关系型数据库, 优点是速度快, 能很方便地扩展. 个人的感觉是它的学习与使用比Redis稍微复杂一点, 这个主要体现在查询上面.

MongoDB的学习资料有很多, 这里推荐官方文档, 另外CU的这个BLOG的一系列文章也很好. perl用户可以看这里. 学习过程中还参考了很久很久以前买的《MongoDB权威指南》, 真心写的挺好的;)

配置与启动

我是直接从官网下的Linux二进制版本, 本来是下的源码包, 完了之后发现需要用scanv来编译, 于是放弃. 二进制版本包含了许多程序, 最主要的程序是mongod服务程序以及mongo这个shell.

MongoDB默认的数据路径为/data/db, 默认监听端口为27017, 当然这里还是推荐使用自定义的配置, 方便查看和管理. 例如像这样:

mongodb.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#port = 7758   ;)
fork = true

dbpath = /PATH/mongo/data

logpath = /PATH/mongo/mongodb.log
logappend = true

nohttpinterface = true

pidfilepath = /PATH/mongo/mongodb.pid

#bind_ip = 127.0.0.1
auth = ture

以上主要指定了记录日志, pid的文件. 注意: 在以auth模式启动前需要先在noauth模式下为对应的数据库添加用户, 不然是没有任何权限的. 不过貌似一般都是以noauth启动的?

auth
1
2
3
4
5
6
7
8
9
10
11
12
13
// in mongo

// in unauth mode

use admin

// the user created in admin can read/write any db
db.addUser('root_name', 'root_pass');


use otherdb

db.addUser('user', 'password')

指定好后可以直接通过mongod -f mongodb.conf来启动mongodb服务. 服务起来后可以使用mongo程序来连接mongodb服务.

简单的操作

mongodb提供的操作蛮丰富的, 这里先推荐一下在自带shell里的一些操作.

in mongo shell
1
2
3
4
5
6
7
8
// see all databases
show dbs

// get all collection names
db.getCollectionNames();

// print the result pretty
db.collection.find().pretty();

有关增删改插的操作推荐参照官网资料. 值得一提的是upsert操作: 有则更新, 无则插入, 用的还是蛮爽的;)

其他

auth模式下, perl使用MongDB时的认证方法为:

auth mongodb
1
2
my $client = MongoDB::MongoClient->new('host' => $host);
$client->authenticate($dbname, $user, $pswd);

找了好久文档没有找到….

最后

预祝大家国庆快乐;)

PPPPSSSS

道哥的这个系列的文章着实精彩, 强烈推荐: 中国黑客传说

Comments