今回は「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 コマンド上で実行しています。
前提データ
1 2 3 4 5 6 7 8 | > 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 }, ]); |
実行コマンド
1 2 3 4 5 6 | > db.createView( "inventory" , "fruits" , [ { $project: { _id: 0, name: 1, instock: 1 } } ] ); { "ok" : 1 } |
結果確認
1 2 3 4 5 6 7 | > 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 の フォロー」 お願いします!!