MongoDBからいくつかのデータを取得しようとしていますが、それを効率的に行う方法がわかりません。私のコレクション/文書構造は理想的ではないかもしれませんし、私は別の方法でそれを保存する必要があります。何かアドバイスは、私は2つのコレクション持っている..MongoDB - このデータを照会する方法
をいただければ幸いです - オブジェクトをビュー
オブジェクト
{
"_id" : ObjectId("4f182ac3369a2b2603010000"),
"name" : "Object name",
"project_id" : "4f182a76369a2b2903000000"
}
オブジェクトビュー
{
"_id" : ObjectId("4f182ac3369a2b2603010000"),
"2012" : {
"r" : 8,
"t" : 16,
"u" : 10,
}
}
私がしたいオブジェクト'Obから2012.rを取得する特定のプロジェクトに属するすべてのオブジェクトのビューのコレクションを取得します。
- は_idフィールドに一致する「オブジェクト ビュー」コレクションからすべてのドキュメントを返す検索クエリを持っている:
は、ここでそれを行う方法の私の考えです。私にとってこれは のようには効率的ではなく、整然としたやり方ではありません(2000年には のオブジェクトがあったとします)。
- すべての 'オブジェクトビュー'ドキュメントにproject_idフィールドを追加し、次にfind_queryを実行してproject_idに一致するすべてのドキュメントを選択します。複数の文書を選択することは効率的であるか(2倍か2000倍か)
- この問題専用のコレクションを作成します。各プロジェクトには、そのプロジェクトに属するオブジェクトのすべてのインスタンスと2012年の値を指定するドキュメントが含まれています。次に、検索クエリを実行して単一のドキュメントを選択します。
いずれの考え/アドバイスや代替ソリューションもありがとうございます。
お気軽にお問い合わせください。あなたが言うように、それにインデックスがあると仮定すると、projectIidをObjectIdまたは文字列として格納することをお勧めしますか? – RichW
私はObject.project_idと同じ型を使います – milan