tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

perl からmongoつないでみるテスト

仕事ではphp-mongodb、または、javascript-mongodbでやっているので
慣れ親しんだperlでも接続しておいてみます

ってことで、MongoDBモジュールのインストールから

結構何度もyesか聞かれることになるので、自動yes選択を設定してからinstall MongoDBします
また、何度かやってみたんですが依存モジュール多すぎなのか依存エラーぽいの入れても入れてもエラーぽかったのでとりあえずforceでinstall

# perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
cpan[3]> force install MongoDB

スクリプトでmongoにドキュメント追加、参照をやってみる

mongo_test.pl

#!/usr/bin/env perl
use strict; 
use warnings;
use utf8;
use MongoDB;
use Data::Dumper;

my $connection = MongoDB::Connection->new( host => 'localhost', port => 27017 );
my $database   = $connection->test_db;
my $collection = $database->test_collection;

my $id   = $collection->insert({ hoge => 'i am hoge!'});
my $data = $collection->find_one({ _id => $id }); 

warn Dumper"$id\t$data->{hoge}\n";

exit 0;

結果

AUTOLOADed database method names are deprecated and will be removed in a future release. Use $client->get_database( 'test_db' ) instead. at mongo_test.pl line 9.
AUTOLOADed collection method names are deprecated and will be removed in a future release. Use $db->get_collection( 'test_collection' ) instead. at mongo_test.pl line 10.
$VAR1 = '5338631e19e607c072000000 i am hoge!

なんかつらつら文字が出てるけどとりあえずinsert&selectはうまくいったっぽい

mongoシェルのほうでも確認

# mongo
> show dbs
admin (empty)
local 0.078125GB
test  0.203125GB
test_db 0.203125GB

> use test_db
switched to db test_db
> show collections
system.indexes
test_collection

> db.test_collection.find()
{ "_id" : ObjectId("5338631e19e607c072000000"), "hoge" : "i am hoge!" }

ってことで、使ってみる程度であれば簡単にできました!