0

次のような構造のスキーマを持つドキュメントを含むmongoコレクションがあります。

{ _id : bla,
  fname : foo,
  lname : bar,
  subdocs [ { subdocname : doc1
             field1 : one
             field2 : two
             potentially_huge_array : [...]
            }, ...
  ]
}

現在elemMatchをサポートしていないrubymongoドライバーを使用しています。プロジェクトを介してサブドキュメントから抽出するときに集計を使用し、パイプラインをほどいて一致させます。

私が今やりたいのは、サブドキュメントに含まれている潜在的に_huge_array配列からの結果をページングすることです。サブドキュメント全体、巨大な配列などすべてをデータベースからアプリにドラッグせずに、配列のサブセットだけを取得する方法を理解できませんでした。

これを行う方法はありますか?

別のスキーマがこれを処理するためのより良い方法でしょうか?

4

2 に答える 2

1

どれだけ巨大であるかにもよりますが、別のドキュメントに埋め込まれたくないことは間違いありません。

主な理由は、常にドキュメントと共に配列を返したい場合を除き、おそらくドキュメントの一部として配列を保存したくないからです。別のコレクションにどのように保存できるかは、正確にどのようにアクセスしたいかによって異なります。

データに対して最も頻繁に実行するクエリの種類を確認すると、通常、最適なスキーマが提案されます。これにより、クエリの数、返されるデータの量、およびデータのインデックス作成が容易になります。

于 2013-02-22T05:42:17.213 に答える
0

フィールドが非常に大きく、頻繁に変更される場合は、別のコレクションに配置してください。

于 2013-02-22T05:11:32.260 に答える