2月 2018年

MongoDB で 2台構成 の レプリカセット を 構築する 方法

今回は「MongoDB で 2台構成 の レプリカセット を 作成する方法」についてまとめます。 …いきなりですが、MongoDB で 2台構成 のレプリカセットを作ることはできません。 低スペックで構いませんので必ず3台構成にする必要があります。 目次 概要 レプリカセットの構築 レプリカセットメンバーの準備 レプリカセットの初期化 レプリカセットの動作確認 レプリカセットの設定確認 レプリカセットのステータス確認 フェールオーバーの動作確認 概要 今回は物理2台 ...

MongoDB で 3台構成 の レプリカセット を 構築する 方法

今回は「MongoDB で 3台構成 の レプリカセット を 作成する方法」についてまとめます。 目次 概要 レプリカセットの構築 レプリカセットメンバーの準備 レプリカセットの初期化 レプリカセットの動作確認 レプリカセットの設定確認 レプリカセットのステータス確認 フェールオーバーの動作確認 概要 今回は以下の図のようなサーバー3台構成(プライマリ1台、セカンダリ2台)のMongoDBサーバーを構築していきます。 今回は動作確認をお試しで行いたいので、以下の制約 ...

MongoDB の レプリケーション 概要

今回は「MongoDB の レプリケーション」についてその概要をまとめます。 タイトルには「レプリケーション」とありますがMongoDBでの実装にあたる「レプリカセット」の概要についてまとめています。 目次 レプリケーション MongoDBにおけるレプリケーション レプリカセットメンバー レプリカセットの構成 自動フェールオーバー データの読み書き レプリケーション 「レプリケーション」はデータを複数のデータベースサーバーへコピーすることで冗長性と可用性を提供する仕組みです。 保存するデータセンターが異なれば災害対策にもなります。 また、同一データがコピーされているので読取が多いアプリケーションでは負荷分散も行えます。 MongoDBにおけ ...

MongoDB で View を作成する 方法

今回は「MongoDB で View を作成する 方法」についてまとめます。 目次 概要 構文 サンプルコード 概要 MongoDB における ビュー は Aggregation Pipeline のショートカットになります。 ビューは読み取り専用コレクションという扱いのため、書き込みを行おうとするとエラーになります。 構文 mongo コマンドで以下の構文を実行することで MongoDB の ビュー を作成することができます。 db.createView( <VIEW_NAME>, <SOURCE_COLLECION>, <PIPELINE>, [<OPTIONS>] ) 引数 型 説明 VIEW_NAME ...

MongoDB で ドキュメント内の配列 を展開する 方法

今回は「MongoDB でドキュメント内の配列を展開する方法」についてまとめます。 MongoDBはドキュメントを保存するデータベースなので、そのドキュメントに配列が含まれることもあります。 今回はその配列を展開する方法についてまとめます。 目次 サンプルデータ aggregate( $unwind ) サンプルデータ 以下のサンプルデータが入っている環境でのサンプルコードおよび実行結果を見ていきます。 > db.fruits.insertMany([ { name: "shirt-A", size: ["S", "M", "L"] }, { name: "shirt-B", size: ["Free"] }, { name: "shirt-C", size: ["S"] } ...

MongoDB で コレクションを結合する 方法

今回は「MongoDB で コレクションを結合する方法」についてまとめます。 MongoDB 3.2 以上 と 3.6 以上 で使える構文が違いますが、今回は両方共の構文を紹介します。 3.6以上であれば条件指定でコレクション結合できるのでよりRDBと似たような複雑なクエリが記載できるようになています。 目次 前提データ 結合フィールドを指定してコレクション結合 構文 サンプルコード 条件指定してコレクション結合 構文 サンプルコード 前提データ 以下のデータを mongo コマンドで投入してある状態で ...

MongoDB で 検索結果 から 不要なフィールド を 削除する 方法

今回は「MongoDB で 検索結果から不要なフィールドを削除する方法」についてまとめます。 どちらかというと「_id が余計なのでこれだけ削除した結果を取得したい」ことが一番多いような気がしますが、 今回は一般化させてどんな加工(今回は削除にフォーカス)ができるのかをまとめます。 MongoDB で 検索結果を加工する場合 aggregate() の $project ステージ で行います。 基本的に削除したいフィールドは 0 指定、表示したいフィールドは 1 指定でできます。 以下で詳しく紹介します。 目次 概要 前提データ 「削除したいフィールド」を指定する 「表示したいフィールド」を指定する 条件付きで「削除したいフィールド」を指定する(?) 概 ...