Perl de MongoDB超入門

ひっさびっさのはなげまんです。
不定期更新ですが Perl de MongoDB超入門 をやっていこうと思います。

Perlインストール MongoDBインストールなどの準備の仕方は
公式ドキュメントや他のブログにお任せします。
また、MongoDB の成り立ちやアーキテクチャなどは、公式ドキュメント等をご参照ください。

今回使用する Perl モジュールは MongoDB.pm にします。
Author は 「Kristina Chodorow」さん。MongoDB を開発している 10gen という会社でソフトウェアエンジニアをされているようです。つまり、10gen 公式のPerl言語で書かれたMongoDBドライバであるという認識ができそうです。さらに ScalingMongoDB などの著者でもあるようですね。

さて、MongoDB.pm はこのページをみるといくつか関係するモジュールがあるようです。
└MongoDB::BSON
└MongoDB::Code
└MongoDB::Collection
└MongoDB::Connection
└などなど
ふむ。追って回を重ねるごとに詳しくみていきましょう。

今回は「MongoDBに接続する」ということをやってみます。簡単です。
「接続する」というキーワードから気になる点がいくつか頭に浮かんできます。
[1] MongoDB::Connection を使えばよさそうだ。
[2] 接続するときのオプションは何があるのだろう。
[3] クライアント/サーバ間で文字コードを utf8 で統一したい。
ですが、[3] の utf8 になっているかは、接続しただけではわからないので、
今回はおまじない的なコードを記述しています。
まぁ、CPAN モジュールをみてだな、以下の様なテストコードになると思うのだよ。

----------------------------------------------------------------------------
use strict;
use warnings;
use utf8;

use Test::More;
use Data::Dumper;
use MongoDB;

{
=test-1
    connect to mongodb with correct data source
=cut
    my $data_source = {
        host => 'hogehoge:27017',
    };

    $MongoDB::BSON::utf8_flag_on = 0;
    my $mongodb = MongoDB::Connection->new( $data_source );
    is ref( $mongodb ), 'MongoDB::Connection', 'MongoDB Connected';

=test-2
    connect to mongodb with incorrect data source
=cut
    $data_source = {
        host => 'hagehage:27017',
    };

    eval {
        $MongoDB::BSON::utf8_flag_on = 0;
        $mongodb = MongoDB::Connection->new( $data_source );
    };
    if ( $@ ) {
        $mongodb = undef;
    }
    is $mongodb, undef, 'MongoDB Not Connected';
}

done_testing();
----------------------------------------------------------------------------

実行結果:

ok 1 - MongoDB Connected
ok 2 - MongoDB Not Connected

と、こうなるはずだ。

んでね、
MongoDB::Connection->new は、接続に失敗すると、die します。
今回は接続に失敗しても処理は続けたいので、eval で囲んでいます。

以上、こんな感じかしら。今回はここまで。
まとめると、
・utf8 フラグは統一しておきたいおまじない。
 $MongoDB::BSON::utf8_flag_on = (0|1);  # 0または1 を設定
・MongoDB::Connection->new は失敗すると die で死ぬ。