13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-06-04

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

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

##目次:

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

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

###1.概要

####1.1 概要
Phoenixのサイトでずっと英語を素人翻訳するのがあきてきたので、
次の活力を得るためにElixir+MongoDBをやってみようかと思います。

今回の記事がQiitaにおける初投稿になります。
皆様の記事は色々と参考とさせて頂いています。いつも、ありがとうございます!
私も何かご協力ができないかと思い、記事を投稿することとしました。

Elixir+MongoDBとニッチな内容だと思いますが、
この記事がどなたかの訳に立つことを願います。

"mix new"やライブラリの取り込み方は、この方の記事を参考に実施しました。
Qiita - Elixirで試しに何か書いてみる(その1)

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

####1.2 前提
MongoDBのインストールやElixirの実行環境はあらかじめ構築しておいて下さい。
また、MongoDBは起動しておいて下さい。

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

####2.1 プロジェクト作成
コマンドプロンプトを開く。

作業ディレクトリを作成します。
各自の適切なディレクトリに移動しておいて下さい。

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

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

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

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

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

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

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

####3.1 mix.exs編集
作業ディレクトリに移動する。

その中から、"/mongo_test/mix.exs"を開く。
色々書かれていると思うが、とりあえず目的だけ達する。

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

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

こんな感じになります。

mix.exs

defmodule MongoTest.Mixfile do
  use Mix.Project

  def project do
    [app: :mongo_test,
     version: "0.0.1",
     elixir: "~> 1.0.4",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  # Configuration for the OTP application
  #
  # Type `mix help compile.app` for more information
  def application do
    [applications: [:logger]]
  end

  # Dependencies can be Hex packages:
  #
  #   {:mydep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
  #
  # Type `mix help deps` for more examples and options
  defp deps do
    [{:mongo, "~> 0.5.1"}]
  end
end

####3.2 ライブラリ取り込み
以下のコマンドを実行する。
>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ソースコード作成
Elixirのソースコードは以下の通り作成した。

mongo_test.ex

mongo = Mongo.connect!
db = mongo |> Mongo.db("phoenix_bbs")
collection = db |> Mongo.Db.collection("comments")
Mongo.Server.close(mongo)

すみません、これだけなんです・・・
Rubyらしくもなく、関数型言語っぽさは皆無です・・・

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

####4.3 MongoDB確認
MongoDBに接続し、DBとCollectionが作成されたか確認してみる。
(接続時、DB、Collectionがない場合は作成されて接続される)

以下、一連の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操作はまた分かったら続きの記事を作成します。

QiitaのMarckdown覚えないと・・・

追記
CRUD操作する続き書きました。
続!ElixirでMongoDBに接続するだけの簡単なお仕事です!!

以上!!

以下、参考にさせて頂いたサイト様
https://github.com/checkiz/elixir-mongo

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?