LoginSignup
1
1

More than 5 years have passed since last update.

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

Posted at

はじめに

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
1
1
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
1
1