2016-04-29 19 views
0

MongoDBの新機能です.MongoDB内で動的なビューを作成する方法があるかどうかを知りたいと思います。MongoDB動的ビューを作成する

もっと正確に言えば: mongoには財務データを含むコレクションと、データを表示するGUIインターフェイスがあります。 しかし、各ユーザーは、グリッドに列を追加または削除してグリッドをフィルタリングすることでデータを減らすことができます。これは古典的なケースです。

私がやりたい何か、ユーザーがフィルターに応じて、マスタテーブルに耳を傾け、ユーザーごとにコレクションを作成することです。このような何か:このシナリオでは

mongo.createView(masterCollection, filters, mapReduce) 

、モンゴの更新ごとマスターコレクション(更新、削除、挿入)で変更が行われるたびに、表示されます。

ユーザーのためのテーブルを作成し、ユーザーフィルターとmapReduceを使用してマスターコレクションで使用可能なカーソルを使用し、ユーザーコレクションのドキュメントを追加、削除、または更新することができます。

しかし、私は100人までの同時ユーザーを持っており、プライマリコレクションでは100個のカーソルを開いて生き残ります。私は十分なmongoを知らないが、私はそれがこのようなことをするのがベストプラクティスではないと思う。

実際に私は、ユーザフィルタに従って、5秒ごとに、コレクションのデータを取得する各ユーザのスレッドを持っています。

このシナリオを処理するネイティブモンゴーの方法や、mongoでユーザービューを作成する方法がある場合は、今すぐ私に教えてください。

ありがとう

+0

バージョン3.2.6から、MongoDBはデータベースレベルでの表示を提供しません。 – Philipp

答えて

0

のMongoDB Enterpriseは、データベースビューを実装して「シングル表示」という機能があります。複数の表(親/子関係など)のデータを集計するのに役立ちます。探しているものを超える場合もありますが、チェックアウトする価値があります。欠点は、高価なエンタープライズ版でのみ利用可能です。 MongoDB v3.4(コミュニティとエンタープライズ版)を皮切り

チェックアウトthe description here

+0

エンタープライズ版の使用は私にとっては選択肢ではありません。私はこれを行う別の方法を見つけるでしょう。 Nerver the less、フィリップスとハスコットにお返事ありがとうございます。 – zouroto

+0

@zourotoここで提供されているリンクは、特定の機能ではなくMongoDB(「データの単一のビューを構築する」)の典型的な使用例です。このユースケースはMongoDBのエンタープライズ版に依存していません。 MongoDB 3.4では、MongoDBのコミュニティ版とエンタープライズ版の両方で利用できる標準機能である[読み取り専用ビュー](https://docs.mongodb.com/manual/core/views/)を作成するためのサポートが追加されました。 – Stennie

1

は、既存のコレクションや他のビューからread only viewsを作成するためのサポートがあります。この機能は、MongoDB aggregation pipelineを使用します。

mongo shellからビューを作成するには、あなたができる:

db.createView(<view>, <source>, <pipeline>, <collation>) 

は、上記のシナリオを使用して、作成することができます。

db.createView(<"user_view_name">, <"source_collection_name">, <"aggregation pipeline operators">) 

利用可能なすべてのAggregation Pipeline Operatorsを参照してください - あなたはできるだけでなく、すなわちフィルタを使用すると、ドキュメント構造を変更することもできます。

詳細については、MongoDB Views behaviourを参照してください。

関連する問題