MongoDB

[備忘]MongoDBの導入から簡単な使い方

はじめに

MongoDBの導入から簡単な使い方をメモっておきます。

ソフトウェア バージョン
CentOS7 7.3.1611
Node.js v6.11.1
Node-RED v0.17.5
MongoDB 3.4 Community Edition

MongoDBのインストール

公式サイトに従ってインストールします。

yumリポジトリの登録

MongoDBのyumリポジトリを設定します。

# vi /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

インストール

yumでインストールします。

# yum install -y mongodb-org

外部からの接続を許可する

デフォルトでは外部からの接続が禁止されているため、これを許可する設定に変更します。
/etc/mongod.confのbindIp: 127.0.0.1の記述をコメントアウトします。

vi /etc/mongod.conf
#  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.

実行してみる

serviceとして実行してみます。SELINUXの設定は適切に。

# systemctl start mongod.service

使ってみる

最低限の使い方です。

  • MongoDBへの接続
> mongo
  • データベースへの接続
    • 既存のデータベースの場合は接続します。
    • 新規のデータベースの場合はuseで接続した後に、コレクションを作らなければなりません。
> use [データベース名]
  • コレクションの作成
> db.createCollection('コレクション名')
  • データベースの一覧表示
> show dbs
  • データベース内のコレクション一覧表示
> use [データベース名]
> show collections
  • ドキュメントの登録
> use [データベース名]
> db.[コレクション名].insert(JSONデータ)
  • ドキュメントの参照(全件)
> use [データベース名]
> db.[コレクション名].find()
  • ドキュメントの参照(検索)
> use [データベース名]

# AND検索
> db.[コレクション名].find({"フィールド名":"検索値"}, {"フィールド名":"検索値"},・・・)

# OR検索
> db.[コレクション名].find({$or:[{"フィールド名":"検索値1"}, {"フィールド名":"検索値2"}]})

# 範囲検索(検索値1より大きく検索値2未満)
> db.[コレクション名].find({"フィールド名":{&gt:"検索値1", &lt:"検索値2"}})

# 取得する項目の指定方法
# 任意の数値が0の場合は非表示となる。_idを表示したくない場合は"_id":0とする。
> db.[コレクション名].find({検索条件},{"取得項目":[任意の数値], "取得項目":[任意の数値]・・・})

# 特定の項目を持つ/持たないドキュメントの検索
> db.[コレクション名].find({"フィールド名":{$exists:[true|false]}})
  • ドキュメントの更新
> use [データベース名]

# ドキュメントを洗い替える場合
> db.[コレクション名].update({検索条件}, {更新後のJSONドキュメント})

# 特定の項目を更新する場合、または、新たに項目を追加する場合
> db.[コレクション名].update({検索条件}, {$set:{"フィールド名":更新内容, "フィールド名",更新内容,・・・}})

# インクリメンタル(指定したフィールドの値を増分プラスする)
> db.[コレクション名].update({検索条件}, {$inc:{"フィールド名":増分}})

# あれば更新、無ければ登録
# 第3引数にtrueを指定する。
> db.[コレクション名].udpate({検索条件}, {更新内容}, true)
  • ドキュメントの削除
> use [データベース名]
> db.[コレクション名].remove({検索条件})

比較演算子

演算子 記述方法
> $gt
>= $gte
< $lt
<= $lte
!= $ne
or $or