この質問は、MongoDB でインデックスを使用して、個々のサブレベルにインデックスを付けることなく、ネストされたドキュメントで何かを検索する方法に関するものです。基本的に次のようなMongoDBのコレクション「テスト」があります。
{
"_id" : ObjectId("50fdd7d71d41c82875a5b6c1"),
"othercol" : "bladiebla",
"scenario" : {
"1" : { [1,2,3] },
"2" : { [4,5,6] }
}}
シナリオには複数のキーがあり、各ドキュメントにはシナリオの任意のサブセット (つまり、なしからサブセット、すべて) を含めることができます。また: Python の辞書として必要なので、シナリオを配列にすることはできません。「シナリオ」フィールドに索引を作成しました。
私の問題は、特定の値を持つドキュメントをフィルタリングして、コレクションを選択したいということです。したがって、これは機能的にうまく機能します:
db.test.find({"scenario.1": {$exists: true}})
ただし、シナリオに追加したインデックスは使用しません。「scenario.1」にインデックスを付けた場合にのみ、インデックスが使用されます。しかし、私は数千 (またはそれ以上) のシナリオを持つことができます (そして、コレクション自体には 100.000 のレコードがあります)。
だから私は代替案を試しました:
db.test.find({"scenario": "1"})
これはシナリオでインデックスを使用しますが、結果は返しません。シナリオを配列にすると、同じインデックスの問題が発生します。
私の質問は明確ですか?ここで最高のパフォーマンスを達成する方法を教えてもらえますか?
Ps 私はこれを見ました: MongoDB でネストされたインデックスを作成する方法? しかし、私の場合、その解決策は不可能です(シナリオの量のため)