スポンサーリンク

2015年6月4日

[Elixir+MongoDB]MongoDBに接続するだけの簡単なお仕事!!

タイトル: [Elixir+MongoDB]MongoDBに接続するだけの簡単なお仕事!!

目的: ElixirからMongoDBのドライバを使ってみる。

実施環境:
OS: Windows8.1
Erlang: Eshell V6.4
Elixir: v1.0.4
elixir-mongo: v0.5.1
MongoDB:v3.0.3

目次:

  1. 概要
  2. "mix new"でプロジェクト作成
  3. Elixirのライブラリを取り込んでみよう!!
  4. MongoDBに接続するだけの簡単なお仕事!!

1.概要

1.1
今回の記事は少し趣向を変えます。
と言いますか、ずっと英語を素人翻訳するのがあきてきたので、
次の活力を得るためにElixir+MongoDBをやってみようかと思います。

この方の記事を参考に実施しました。
Qiita - Elixirで試しに何か書いてみる(その1)

しかし、CRUD操作まで辿り着けなかった・・・orz

1.2
環境はあらかじめ構築しておいて下さい。

  • MongoDBのインストール
  • Elixirのインストール

また、MongoDBは起動しておいて下さい。
参考までに・・・

2."mix new"でプロジェクト作成

2.1
コマンドプロンプトを開く。

作業ディレクトリを作成するので、
適切なディレクトリに移動しておくこと。

2.2
以下のコマンド実行する。
コマンド: mix new mongo_test

作業ディレクトリ名はお好きなものをどうぞ!!

ディレクトリが作成されているか確認する。
lsでもいいしGUIで見てもいいです。

これで、mix newを使ってプロジェクトができました。

2.3
作成したディレクトリへ移動し、以下のコマンドを実行する
コマンド: mix test

何もエラーが出なければおk。

3.Elixirのライブラリを取り込んでみよう!!

3.1
作業ディレクトリに移動する。

その中から、"/mongo_test/mix.exs"を開く。

3.2
色々書かれていると思うが、とりあえず目的だけ達する。

何がしたいか・・・
MongoDBのElixirドライバのライブラリが欲しい!!

下の方に"defp deps do"と言う部分がある。
ここに、以下の行を追加する。
追加: [{:mongo, "~> 0.5.1"}]


3.3
以下のコマンドを実行する。
コマンド: mix deps.get

これで、3.2で設定したライブラリがダウンロードできる。
依存関係とかも考慮しないといけないらしいが、
今回使うライブラリは一つだけなので気にしない。

hexの利用を聞かれると思うがyesで・・・
local.hexと各プロジェクトで混在できるらしい。

参考までにコマンドの実行結果
mongo_test>mix deps.get
Could not find hex, which is needed to build dependency :mongo
Shall I install hex? [Yn] y
* creating c:/Users/Takes_000/.mix/archives/hex.ez
Running dependency resolution
Dependency resolution completed successfully
  mongo: v0.5.1
  bson: v0.4.3
* Getting mongo (Hex package)
Checking package (https://s3.amazonaws.com/s3.hex.pm/tarballs/mongo-0.5.1.tar)
Fetched package
Unpacked package tarball (c:/Users/Takes_000/.hex/packages/mongo-0.5.1.tar)
* Getting bson (Hex package)
Checking package (https://s3.amazonaws.com/s3.hex.pm/tarballs/bson-0.4.3.tar)
Fetched package
Unpacked package tarball (c:/Users/Takes_000/.hex/packages/bson-0.4.3.tar)

4.MongoDBに接続するだけの簡単なお仕事!!

4.1
Elixirのソースコードは以下の通り作成した。


すまないが、これだけなんだ・・・

4.2
mixで実行するため以下のコマンドを使う。
コマンド: mix run ./lib/mongo_test.ex

4.3
MongoDBに接続し、DBとコレクションが作成されたか確認してみる。
(接続時、DB、コレクションがない場合は作成されて接続される)

以下、一連のMongoDB操作の流れ
mongo_test>mongo
MongoDB shell version: 3.0.3
connecting to: test
> db
test
> show databases
local        0.078GB
phoenix_bbs  0.078GB
> use phoenix_bbs
switched to db phoenix_bbs
> show collections
comments
system.indexes
>exit

問題なく作成されている。
CRUD操作は何れにせよやらなくてはいけないので、
また分かったら続きの記事を作成する。

追記(2015/06/04-21:20)
CRUD操作ができました。

修正したソースコードは以下の通りになります。


実行結果
insert result
[%{_id: ObjectId(55703854f328cfab505c6d99), comment: "hogehoge", name: "hoge",
   title: "hoge"},
 %{_id: ObjectId(55703854f328cfab505c6d9a), comment: "hugehuge", name: "huge",
   title: "huge"},
 %{_id: ObjectId(55703854f328cfab505c6d9b), comment: "darui", name: "darui",
   title: "blogger"},
 %{_id: ObjectId(55703854f328cfab505c6d9c), comment: "foobar", name: "foo",
   title: "bar"}]

update result
[%{_id: ObjectId(55703854f328cfab505c6d99), comment: "hogehoge", name: "hoge",
   title: "hoge"},
 %{_id: ObjectId(55703854f328cfab505c6d9a), comment: "hugehuge", name: "huge",
   title: "huge"},
 %{_id: ObjectId(55703854f328cfab505c6d9b), comment: "darui", name: "darui",
   title: "blogger"},
 %{_id: ObjectId(55703854f328cfab505c6d9c), comment: "fizzbazz", name: "fizz",
   title: "bazz"}]

delete result
[%{_id: ObjectId(55703854f328cfab505c6d99), comment: "hogehoge", name: "hoge",
   title: "hoge"},
 %{_id: ObjectId(55703854f328cfab505c6d9a), comment: "hugehuge", name: "huge",
   title: "huge"},
 %{_id: ObjectId(55703854f328cfab505c6d9b), comment: "darui", name: "darui",
   title: "blogger"}]

以上!!

以下、参考にさせて頂いたサイト様

管理人の独り言~
MongoDBに接続できるのにCRUD操作ができない・・・orz

Elixirの記法とかさっぱりやってないのがいけない。
Phoenixばかりではなく、Elixir自体も少しやらないと・・・

追記(2015/06/04-21:25)
CRUD操作できたー!!


人気の投稿