2016-07-19 6 views
0

私はMongoDBの初心者です。私たちのアプリケーションでは、各テーブルのデータサイズがかなり大きいので、同じ種類であっても、同じコレクションを別々のコレクションに分割することにしました。唯一の違いは、すべてのコレクション内の各ドキュメント(1つのコレクション内のドキュメントは1つのカテゴリの下にある)間の「ID」です。そのため、データを数値コレクションに挿入することにしました。各コレクションには特定の数のドキュメントが含まれています。現在私は同じ種類の文書データを10個集めています。 私の要件は です。1)アプリケーションのホームページに表示する1つのクエリ内のすべてのコレクションからデータを取得するには 2)フェッチする前にソートとフィルタリングを使用してデータを取得する必要があります。mongoDBの2つ以上のコレクションから同様のデータを読む

私はこの要件のMongo-3.2 $ lookup集約を使用していると言っているstackoverflowの投稿のいくつかを通過しました。私は10のコレクションのための$ルックアップを使用する場合、パフォーマンスの問題とあまりにも複雑なクエリがある可能性があります。 私は同じ種類のデータをコレクションの数に分割しているので(各コレクションには1つのカテゴリに属する​​ドキュメントがあります.10個のカテゴリがあるので、10個のコレクションを使用する必要があります)

私のアプローチが正しいかどうかを私に示唆してもらえますか?

+0

データサイズが大きいためにコレクションを分割する理由がある場合は、代わりに[シャーディング](https://docs.mongodb.com/manual/sharding/)を使用して負荷/サイズを分散する必要があります。 –

答えて

0

多くのデータがある場合、どのようにそれらをすべてWebページに表示できますか?

私の理解では、データベースを照会することでデータセットの一部しか表示されません。あなたはあなたが持っているレコードの数について言及していないので、推薦をすることは容易ではありません。

曖昧な説明に基づいて、シャーディングが解決策です。official docをチェックアウトする必要があります。

シャーディングを行う前に、初心者の方は、データベースのインデックス作成、データモデル、パフォーマンスのベンチマークを最初にチェックしたいと思うかもしれません。

これが役に立ちます。

0

10種類のデータすべてを1つのコレクションに保存する必要があります。必要以上に難しくしないでください。

+0

はい、それは正しいhelmyですが、データは巨大になります.1つのコレクションについては巨大になります。 –

+0

「巨大」を定義しますか?それは重要ではありません。データ量だけに基づいてコレクションを分割するべきではありません。 Wanが述べたように、シャーディングはスケーリングを扱うためのアプローチになります。 – helmy

+0

http://stackoverflow.com/questions/38455609/getting-the-required-documents-from-both-the-collections-in-one-query-in-mongodb/38456140?noredirect=1#をご覧ください。 comment64318284_38456140これは私の必要条件を満たす –

関連する問題