目的: ElixirからMongoDBのドライバを使ってみる。
実施環境:
OS: Windows8.1
Erlang: Eshell V6.4
Elixir: v1.0.4
elixir-mongo: v0.5.1
MongoDB:v3.0.3
目次:
- 概要
- "mix new"でプロジェクト作成
- Elixirのライブラリを取り込んでみよう!!
- MongoDBに接続するだけの簡単なお仕事!!
1.概要
1.1
今回の記事は少し趣向を変えます。
と言いますか、ずっと英語を素人翻訳するのがあきてきたので、
次の活力を得るためにElixir+MongoDBをやってみようかと思います。
この方の記事を参考に実施しました。
Qiita - Elixirで試しに何か書いてみる(その1)
しかし、CRUD操作まで辿り着けなかった・・・orz
1.2
環境はあらかじめ構築しておいて下さい。
すまないが、これだけなんだ・・・
4.2
追記(2015/06/04-21:25)
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)
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
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操作ができました。
修正したソースコードは以下の通りになります。
実行結果
追記(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操作できたー!!