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

クエリの構文に基づいて使用されていないサブドキュメントのMongoDBインデックス

    モンゴの書類を調べてみたところ、わかったと思います。基本的に、 これら2つのセマンティクスの違い。基本的に、クエリの最初の形式では{c: {d: d1}} 、mongoは、全体を指定していることを前提としています。 サブドキュメント。したがって、サブドキュメントがある場合{c: {d: d1, e: e1}} 、一致しません。

    OTOH、クエリの2番目の形式{'c.d': d1} サブドキュメント内の1つのフィールドにのみ一致を指定していることを意味します。これは、サブドキュメントに他のフィールドまたはサブサブドキュメント全体がある場合でも一致します。

    この違いはインデックスにも及びます。 _ensureIndex({c: 1}) および_ensureIndex({'c.d': 1}) は2つの異なるインデックスであり、最初のインデックスはサブドキュメント全体にインデックスを付けますが、c.dを使用して個々のフィールドでクエリを実行した場合は使用されません。 表記。




    1. インデックスの共通部分と複合インデックス?

    2. マングースによるバッチ更新

    3. mongodbタイプを配列に変更

    4. SpringDataMongo-クエリメソッドと個別フィールド