Help us understand the problem. What is going on with this article?

MongoDB の GUI CRUD ツール Compass を使ってみた(...ら MongoDB の凄さに驚いた件)

More than 1 year has passed since last update.

概要

MongoDB の公式で用意されている GUI CRUD ツール「MongoDB Compass(コンパス)」を導入・使用した時の備忘録。
MariaDB(MySQL)で言うところの Workbench(ワークベンチ)みたいなやつ。

・・・で、興味本位の備忘録のつもりが「MongoDB すごいじゃん!」ってなった感動も併せてチョイチョイ記す。

前提

ローカルマシン: MacBook Pro (Retina, 15-inch, Mid 2015)
OS: macOS Mojave (v10.14.2)

また、MongoDB が構築済みであること

前知識

MySQL 等の RDB の概念しかわからない方は、MongoDB の概念で混乱しがちです。
以下の表でキーワードの理解をマッピングしてください。
厳密には同じでは無いので、あくまでもイメージし易くする参考までに。

MongoDB での概念 RDB での概念
データベース データベース
コレクション テーブル
ドキュメント 行/レコード
フィールド

導入

ツールダウンロード

MongoDB 公式サイトのダウンロードページ」からダウンロードする。
※ 無料だが、メールアドレスなど登録作業が多少必要になる。

スクリーンショット 2019-02-03 21.05.33.png

スクリーンショット 2019-02-03 21.22.00.png

インストール

ダウンロードしたやつをインストールする。ダブルクリックするだけ。

スクリーンショット 2019-02-03 21.25.43.png

Mac の場合はアプリフォルダに移動するとインストール完了

スクリーンショット 2019-02-03 21.27.43.png

初回起動

初回起動時だけなんか色々聞かれます。

  • Enable Product Feedback Tool(フィードバック送信を許可するか)
  • Enable Geographic Visualizations(サードパーティ製品の地図化サービス連携を許可するか)
  • Enable Crash Reports(クラッシュレポート送信を許可するか)
  • Enable Usage Statistics(ツール利用の匿名の使用統計データ送信を許可するか)
  • Enable Automatic Updates(自動アップデート機能を許可するか)

チェック入れるかは任意です。(ちなみに今回は、「Enable Product Feedback Tool」「Enable Crash Reports」「Enable Usage Statistics」を外しました)

スクリーンショット 2019-02-03 21.38.47.png

・・・ってか、Geographic 連携できるんすね。ちょっと驚きました。

使い方

接続設定

接続設定が未設定の場合は下図の通り。・・・って、画面、カッコいいな、おい。
ユーザインターフェースが、従来の RDB の GUI ツールと比べるとだいぶシャレオツ。
ただ、日本語化設定は無い。残念。(2019年2月現在)

スクリーンショット 2019-02-03 21.48.33.png

設定項目 内容
Hostname MongoDB 起動ホスト名。今回は localhost で行う
Port MongoDB 起動ポート番号。今回はデフォルトの 27017
SRV Record ドメイン情報の特殊な設定。今回は無効のまま
Authentication MongoDB の認証設定を行なっていない場合は None でよい。今回はユーザ認証してるので「Username/Password」を選択。
Username DB 接続時のユーザID
Password DB 接続時のユーザパスワード
Authentication Darabase 認証設定選択時のみ表示される項目。標準的な構築なら「admin」にユーザ作ってるはず
Replica Set Name レプリケーションの設定項目(※ 詳細は後述)。今回は不要
Read Preference こちらもレプリケーションの設定項目。今回不要
SSL ホストとのSSL通信設定。今回はローカルなので None
SSH Tunnel こちらも None
Favorite Name 画面左ナビゲーションの「Favorites」欄に表示される任意の設定名称。日本語も使えます。未設定の場合は「Favorites」に表示されず、「RECENTS」の接続履歴にのみ表示される

接続後ホーム画面

接続が成功するとこんな画面になる。・・・うーむ、やはりシャレオツですね。。。
ホスト内の DB 一覧が表示される。
ログインユーザの権限に基づいて DB 表示制御・操作制御がなされる。
今回は、事前に「sample」という DB を作成してある。

ログイン後の他の画面に遷移しても、左上のホームアイコンをクリックでこの画面に戻ってこれる。

スクリーンショット 2019-02-03 22.33.58.png

DBを切断して、新規接続を作成したい場合は、メニューの Disconnect で切断すると戻れる。(下図は、Mac の場合)

スクリーンショット 2019-02-03 23.47.56.png

DB 新規作成

ホーム画面の「CREATE DATABASE」ボタンを押下すると以下のようになる。
DB 名とコレクション名を入れて、モーダルの「CREATE DATABASE」を押すだけ。

スクリーンショット 2019-02-03 23.53.57.png

DB 作成時の「Invalid namespace specified 'DB 名.'」エラー

これは、最低1つのコレクションを DB 生成と同時に作る必要があり、DB 名だけ入力して CREATE しようとすると「Invalid namespace specified 'DB 名.'」というエラーが表示される。
ややこしいことに、意訳すると「指定された DB 名称は不正です」的な旨のエラー内容だが、実際は DB 名称ではなく、コレクションも指定しないために発生している。とりあえず、罠があるので注意。

スクリーンショット 2019-02-04 0.02.25.png

上図の状態で、コレクション名だけ追記すると DB 作成に成功する。

DB 削除

削除する際は、ホーム画面の DB 一覧でゴミ箱マークをクリックすると下図のようになる。
その状態で、誤削除防止の DB 名入力作業をしてから、DROP ボタンを押すと DB が削除される。

スクリーンショット 2019-02-04 0.11.23.png

コレクション操作

DB 一覧から DB を選択、または左ナビゲーションからアコーディオンを開いて中のコレクションをクリックすると、コレクション画面に遷移する。「リスト表示」と「テーブル表示」の2種類の表示方式がある。

リスト表示の場合

スクリーンショット 2019-02-04 0.14.41.png

テーブル表示の場合

スクリーンショット 2019-02-04 0.16.11.png

検索

コレクションを選んだ時点で一覧表示がされるため、上部の「FILTER」に絞り込み条件を入れて「FIND」を押すだけ。
書き方は、{フィールド名: 検索値}と入力する。(詳細は公式などを見てください)

新規ドキュメント作成(INSERT)

「INSERT DOCUMENT」ボタンを押下して、立ち上がったモーダルダイアログの中で新規データのフィールドの値を入力するだけ。
_id は、標準的に作成したドキュメントであれば、勝手に ObjectId が自動付与される。

ドキュメントの更新

一覧の各ドキュメントの右側に、鉛筆マークが出てるので、それ触って中身変えるだけ。
もしくは、一覧のデータでいじりたいところをダイレクトにダブルクリックして変更するだけ。

ドキュメントの削除

一覧の各ドキュメントの右側のゴミ箱から削除できる

おまけ:補足事項

Replica Set とは

Replica Set (レプリカセット) とは、MongoDB が標準で備える強力なレプリケーションと自動フェイルオーバーの仕組み。

MongoDB は、複数サーバにDBをレプリケーション設定し、特定のマシンに何かあっても、他のマシンでデータの損失を回避する冗長構成を簡単に組むことができるフェイルオーバーの仕組みを標準で搭載している。

さらに、MongoDB には強力なシャーディング (水平分割) 機能も標準搭載されており、データを複数サーバに分散することができるが、
このシャーディングにおいて、複数台のMongoDBサーバーで構築された Replica Set をシャードとして追加することが可能。

これらによって、大規模で高可用なデータベースをシンプルに構築することができ、これらを標準機能として持っていることは MongoDB の大きな強みであるとのこと。

詳細は、公式のドキュメントを参照のこと。
Replication Introduction - MongoDB Manual 3.0

とりあえず、MongoDB 思ってたよりすごいぞ!・・・と言うことに、GUI ツールの設定を触ってて初めて気づいた。

tomy0610
なんちゃってフルスタック風エンジニア。変わった技術に興味津々、ハーフで顔も濃いが、「そろそろ彼女が欲しいなぁ」とか普通に考えたりする、どこにでもいる健全な男子。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした