コレクションにしたいMongoDBデータベースのビューがある場合は、適切な場所にいます。
以下は、MongoDBでビューをコレクションに変換する例です。
例
この例は、MongoDBデータベースツールのmongodump
を使用してビューをコレクションに変換する方法を示しています。 およびmongorestore
。
これらのツールをインストールしていない場合は、MongoDBインストールガイドを参照してください。
ビューを見つける
まず、現在のデータベースのビューとコレクションを見てみましょう。
show collections
結果:
employees owners pets system.views v_pettypes
この場合、v_pettypes
実際にはビューです。
次のクエリでビューであることを確認できます:
db.getCollectionInfos( { "name": "v_pettypes"} )
結果:
[ { "name" : "v_pettypes", "type" : "view", "options" : { "viewOn" : "pets", "pipeline" : [ { "$group" : { "_id" : "$type" } } ] }, "info" : { "readOnly" : true } } ]
type
であるため、ビューであることがわかります フィールドの値はview
。
ビューをコレクションに変換
これで、先に進んでそのビューをコレクションに変換できます。これは、MongoDBデータベースツールのmongodump
を使用して実行できます。 およびmongorestore
。
mongodump
を使用します ビューをエクスポートするには、mongorestore
それを復元します。具体的には、mongodump
をパイプ処理します ストリームをmongorestore
に出力します 。そうすれば、すべてを一度に行うことができます。
コードは次のとおりです:
mongodump --archive --db=PetHotel --collection=v_pettypes --viewsAsCollections | mongorestore --archive --nsFrom='PetHotel.v_pettypes' --nsTo='PetHotel.pettypes'
そのコードは、システムのコマンドライン(新しいターミナルやコマンドプロンプトウィンドウなど)から実行する必要があります。 mongo
から実行しないでください シェル。
そのコードを実行すると、v_pettypes
が変換されました pettypes
というコレクションを表示します 同じデータベース内。
厳密に言えば、実際には変換しませんでした コレクションへのビュー。 --viewsAsCollections
を使用しただけです ビューをコレクションとしてダンプする引数を指定してから、そのコレクションをデータベースに復元しました。したがって、元のビューはまだ存在します。
ビューをコレクションとしてエクスポートする場合、mongodump
ビュー内のドキュメントを含むBSONファイルを生成します。 mongorestore
を使用する場合 生成されたBSONファイルを復元するには、ビューがコレクションとして復元されます。
--viewsAsCollections
を使用せずに 引数、mongodump
各ビューのメタデータをエクスポートします。ビューのメタデータファイルをmongorestore
に含める場合 操作すると、ビューが再作成されます。
--viewsAsCollections
を使用する また、すべての標準コレクションを省略します。
結果を確認する
ビューとコレクションをもう一度見てみましょう。
show collections
結果:
employees owners pets pettypes system.views v_pettypes
したがって、pettypes
という新しいコレクションが表示されます。 存在し、元のビューはまだ存在します。
pettypes
であることを確認できます 次のようなコレクション(ビューではありません)です:
db.getCollectionInfos( { "name": "pettypes"} )
結果:
[ { "name" : "pettypes", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("d183c7e4-44bc-4656-b272-7ad707f8dc62") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]
type
フィールドにcollection
の値が含まれています 、つまりコレクションです。
元のビューを削除
この段階で、元のビューを削除するか、そのままにしておくかを選択できます。
次のようにドロップできます:
db.v_pettypes.drop()
コレクションを確認すると、元のビューがなくなり、新しいコレクションが残っていることがわかります。
show collections
結果:
employees owners pets pettypes system.views