MongoDB で View を作成する 方法

0 件のコメント

今回は「MongoDB で View を作成する 方法」についてまとめます。

概要

MongoDB における ビュー は Aggregation Pipeline のショートカットになります。 ビューは読み取り専用コレクションという扱いのため、書き込みを行おうとするとエラーになります。

構文

mongo コマンドで以下の構文を実行することで MongoDB の ビュー を作成することができます。

db.createView( <VIEW_NAME>, <SOURCE_COLLECION>, <PIPELINE>, [<OPTIONS>] )
引数 説明
VIEW_NAME string 新規作成するビュー名を指定します。
SOURCE_COLLECTION string 入力コレクション名を指定します。
PIPELINE array ビューで表示したい情報を構成するための Aggregation Pipeline を指定します。
OPTIONS object オプション。 collation を指定できます。

サンプルコード

実際に上記構文を利用するサンプルコードを見ていきたいと思います。

今回は fruits コレクションから在庫情報だけ取り出して inventory ビューを作成してみます。 以下のコードはいずれも mongo コマンド上で実行しています。

前提データ

> db.fruits.insertMany([
  { code: "0101", name: "apple", price: 120, instock: 10 },
  { code: "0201", name: "banana", price: 180, instock: 8 },
  { code: "0301", name: "orange", price: 130, instock: 5 },
  { code: "0302", name: "grapefruit", price: 150, instock: 7 },
  { code: "0401", name: "persimmon", price: 100, instock: 6 },
  { code: "0102", name: "pear", price: 130, instock: 12 },
]);

実行コマンド

> db.createView(
  "inventory",
  "fruits",
  [ { $project: { _id: 0, name: 1, instock: 1 } } ]
);
{ "ok" : 1 }

結果確認

> db.inventory.find()
{ "name" : "apple", "instock" : 10 }
{ "name" : "banana", "instock" : 8 }
{ "name" : "orange", "instock" : 5 }
{ "name" : "grapefruit", "instock" : 7 }
{ "name" : "persimmon", "instock" : 6 }
{ "name" : "pear", "instock" : 12 }

ビューは一度作成してしまえば通常のコレクション同じように find() や aggregate() などの操作ができます。 また、不要になれば drop() で削除することもできます。

db.createView() を実行した後、show collections を行うとわかりますが、 ビューを作成すると自動的に system.views コレクションが作成され、 system.views コレクションに作成したビューの情報が格納されます。

今回は「MongoDB で View を作成する 方法」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!

参考記事

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!