今回は「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 の フォロー」 お願いします!!