ワイルドカード インデックス署名
項目一覧
MongoDB 5.0以降、 ワイルドカード インデックスの wildcardProjection
オプションがインデックス署名に含まれます。 インデックス署名は、インデックスを一意に識別するパラメーターの組み合わせです。 つまり、 wildcardProjection
オプションに同じフィールドが含まれていない限り、同じキー パターンを持つ複数のワイルドカード インデックスを作成できます。
プロジェクション署名の表示
MongoDB 6.3、6.0.5、および 5.0.16 以降では、wildcardProjection
フィールドには送信された形式でインデックス プロジェクションが格納されます。それ以前のバージョンでは、プロジェクションは正規化された形式で保存されている場合があります。
サーバーは同じ方法でインデックスを使用しますが、 listIndexes
} コマンドとdb.collection.getIndexes()
コマンドの出力には違いが生じる場合があります。
例
books
コレクションの次のワイルドカード インデックスを検討します。
db.books.createIndex( { "$**": 1 }, { wildcardProjection: { "author.name": 1, "author.website": 1 }, name: "authorWildcard" } )
インデックスキー パターンは"$**"
です。 別のwildcardProjection
を指定すると、同じキー パターンを持つ別のワイルドカード インデックスを作成できます。 例:
db.books.createIndex( { "$**": 1 }, { wildcardProjection: { "publisher.name": 1 }, name: "publisherWildcard" } )
作成されたインデックスを表示するには、 getIndexes()
メソッドを実行します。
db.books.getIndexes()
出力:
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { '$**': 1 }, name: 'authorWildcard', wildcardProjection: { author: { website: true, name: true }, _id: false } }, { v: 2, key: { '$**': 1 }, name: 'publisherWildcard', wildcardProjection: { publisher: { name: true }, _id: false } } ]