sql >> データベース >  >> NoSQL >> MongoDB

集約フレームワークの対象インデックスの作成

    インデックスを最大限に活用するには、インデックス内のすべてのフィールドを使用するパイプラインの早い段階で$matchを設定する必要があります。また、$andの使用は避けてください 演算子は不要であり、現在の(2.4)バージョンでは、インデックスが完全に使用されない可能性があるためです(幸い、次の2.6で修正されます)。

    ただし、$elemMatchを使用する必要があるため、クエリは完全には正しくありません。 名前と値のフィールドを満たすために同じ要素が使用されていることを確認します。

    クエリは次のようになります:

    db.Phone.aggregate([
    {$match: {  type: "Samsung", 
               attributes: { $all: [
                    {$elemMatch: {"value":"100", "type" : "BatteryLife" }},
                    {$elemMatch: {"value":"200$", "type" : "Price" }}
               ] }
            }
    }]);
    

    さて、ではありません nameがインデックスにないことは言うまでもなく、attributes.valueとnameが埋め込まれているため、対象となるクエリになります。

    インデックスは{"type":1, "attributes.value":1, "attributes.name":1}である必要があります 最高のパフォーマンスを得るには、まだカバーされていませんが、現在よりもはるかに選択的です。




    1. PythonはMongodbのOplogへの変更をどのように観察できますか

    2. MongoDBでの大文字と小文字を区別しない並べ替え

    3. mongodb埋め込みコレクション内のアイテムの数を返すクエリ

    4. これはServiceStackRedisの有効な使用法ですか?