4

2 つの巨大な (数十万件のレコード) コレクションCol1Col2があり、それらの両方から結合されたデータを取得する必要があります。返されるレコードの数を数百に劇的に減らすことができる結合基準があるため、SQL 言語では次のように実行します。

 SELECT ... FROM Col1 INNER JOIN Col2 ON Col1.field1 = Col2.field2

およびインデックス付きフィールドであるためCol1.field1、かなり高速に実行されます。Col2.field2すべてのアイテムをスキャンするのではなく、MongoDb でインデックスを使用して同じことを高速に実行する直接的な方法または回避策はありますか?

注: コレクションを再設計して 1 つにマージすることはできません。

4

3 に答える 3

4

MongoDB には JOIN がないため、同等の高速なものはありません。スキーマ設計の問題である可能性が最も高いですが、それを変更できないとあなたは言いました。1 つのクエリで複数のコレクションをクエリすることはできません。

2 つのクエリでクライアント側の結合を行うか、map-reduce を実行して 3 番目のコレクションを生成することにより、非ライブ スタイルで結合を行うことができます。

map-reduce の実行方法の詳細については、この他の質問を参照してください

于 2012-09-24T00:13:00.070 に答える