$lookup
はMongoDB3.2の新機能です。同じデータベース内のシャーディングされていないコレクションへの左外部結合を実行して、処理のために「結合された」コレクションからドキュメントをフィルタリングします。
$lookup
を使用するために、from
コレクションをシャーディングすることはできません。
一方、シャーディングは便利な水平スケーリングアプローチです。
それらを一緒に使用するためのベストプラクティスは何ですか?
引用するドキュメントが示すように、シャードコレクションで$lookup
を使用することはできません。したがって、ベストプラクティスの回避策は、別のクエリで自分でルックアップを実行することです。
aggregate
クエリを実行します。Array#map
を使用して、クエリ結果から「localField」値を配列にプルします。{foreignField: {$in: localFieldArray}}
のようなクエリを使用して、「from」コレクションに対してfind
クエリを実行します。$lookup
の制限により、スケーラビリティのためにそれを必要とするコレクションをシャーディングすることを妨げないでください。ルックアップ機能を自分で実行するだけです。