a-Column

【CentOS】mongoDBについて


http://www.mongodb.org/downloads

■mongoDBのインストール(Src)

# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz
# tar zxvf mongodb-linux-x86_64-2.4.9.tgz

データ格納用のディレクトリィ作成

# mkdir -p /data/db

mongoDBの手動起動(フォアグラウンド)

# ./bin/mongod

./bin/mongod --help for help and startup options
Mon Mar 10 11:50:52.043 [initandlisten] MongoDB starting : pid=17051 port=27017 dbpath=/data/db/ 64-bit host=NPVS21264-001IDC
Mon Mar 10 11:50:52.043 [initandlisten] db version v2.4.9
Mon Mar 10 11:50:52.043 [initandlisten] git version: 52fe0d21959e32a5bdbecdc62057db386e4e029c
Mon Mar 10 11:50:52.043 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Mon Mar 10 11:50:52.043 [initandlisten] allocator: tcmalloc
Mon Mar 10 11:50:52.043 [initandlisten] options: {}
Mon Mar 10 11:50:52.056 [initandlisten] journal dir=/data/db/journal
Mon Mar 10 11:50:52.056 [initandlisten] recover : no journal files present, no recovery needed
Mon Mar 10 11:50:52.236 [FileAllocator] allocating new datafile /data/db/local.ns, filling with zeroes...
Mon Mar 10 11:50:52.236 [FileAllocator] creating directory /data/db/_tmp
Mon Mar 10 11:50:52.239 [FileAllocator] done allocating datafile /data/db/local.ns, size: 16MB, took 0.001 secs
Mon Mar 10 11:50:52.239 [FileAllocator] allocating new datafile /data/db/local.0, filling with zeroes...
Mon Mar 10 11:50:52.240 [FileAllocator] done allocating datafile /data/db/local.0, size: 64MB, took 0.001 secs
Mon Mar 10 11:50:52.243 [websvr] admin web console waiting for connections on port 28017
Mon Mar 10 11:50:52.243 [initandlisten] waiting for connections on port 27017

mongoDBの起動(バックグラウンド)

# ./mongod --dbpath /data/db &


■mongoDBのインストール(yum)

リポジトリの登録
# cat /etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

# yum install mongo-10gen mongo-10gen-server

サービス起動

# service mongod start

対話型のシェルであるMongoDBクライアントの起動は簡単です。


[root@NPVS21264-001IDC data]# mongo
MongoDB shell version: 2.4.9
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
>


MongoDBクライアントの実行時に何もオプションを指定しない場合は、自動的にローカルのMongoDB(localhostの27017ポート)のtestというデータベースに接続されます。なお、このツールはJavaScriptのシェルで、MongoDBのコマンドを実行できるだけでなくJavaScriptの実行が可能となっています。

■データベースの作成

useコマンドを作成したいデータベース名を指定して実行すると、指定した名前のデータベースがその環境に存在しなければ、新たに作られた上でそのデータベースに自動的にスイッチします。すでに同じ名前のデータベースがあれば単にスイッチするだけです。今回は"testdb"という名前でデータベースを作成します。

[root@NPVS21264-001IDC data]# mongo
MongoDB shell version: 2.4.9
connecting to: test
> use testdb
switched to db testdb
>

■使用中のデータベースを確認するコマンド

> db
testdb

■サーバ上に存在するデータベースを確認するコマンド

この際、中身(コレクション)のないデータベースは表示されません。

> show dbs
local 0.078125GB

■コレクションの作成及びドキュメントの作成

今回はtest_sample"という名前のコレクションを作成し、このコレクションに新規にドキュメントを作成します。このとき、存在しないコレクションが指定されると自動で作成されます。

> db.test_sample.insert({ "key1" : "value1", "key2" : "value2" })

MongoDBで基本的なドキュメントの操作する場合は、操作対象のデータベースとコレクションを指定する必要があります。今回の例で言えば、"db.sample_coll"がそれにあたります。ここで指定している"db"は現在使用しているデータベースを示します。"test_sample"は例として使うコレクションの名前です。その後のinsert()で指定したコレクションへのドキュメントの作成を行っています。今回は例として"key1"と"key2"というフィールド名で"value1"と"value2"という値をドキュメントのデータとしています。このように、MongoDBではinsert()メソッドの引数として作成するドキュメントのデータを
JSON形式で渡す必要があります。

また、ドキュメントは一部の特別なコレクションのドキュメントを除いて、"_id"というフィールドを持っています。この値はコレクション内でユニークである必要があり、通常データタイプとしてBSONのObjectIdが使用されます。しかし、先ほどの例ではこの_idフィールドを指定していません。_idフィールドを指定せずにinsert()メソッドを実行した場合、データベースが自動的にObjectIdを作成し、_idフィールドへと格納します。

■データベース内に存在するコレクションの一覧を確認するには"show collections"を実行します。

> show collections
system.indexes
test_sample

■ドキュメントの検索

> db.test_sample.find()
{ "_id" : ObjectId("531fc98dadafa387be736161"), "key1" : "value1", "key2" : "value2" }

Last Update : 2014年04月29日 (火) 21:5