複合インデックスは次のように定義されることを知っています。
db.products.ensureIndex( { "item": 1, "stock": 1 } )
そして、次のようなハッシュされた単純なインデックス:
db.active.ensureIndex( { item: "hashed" } )
問題は、両方を達成する方法ですか?
複合インデックスは次のように定義されることを知っています。
db.products.ensureIndex( { "item": 1, "stock": 1 } )
そして、次のようなハッシュされた単純なインデックス:
db.active.ensureIndex( { item: "hashed" } )
問題は、両方を達成する方法ですか?
ハッシュ化されたインデックスのドキュメントによると、できません!
MongoDB は、任意の単一フィールドのハッシュ インデックスをサポートします。ハッシュ関数はサブドキュメントを縮小し、値全体のハッシュを計算しますが、マルチキー (配列) インデックスはサポートしていません。
ハッシュ化されたインデックス フィールドを持つ複合インデックスを作成することはできません
PS: 上記はバージョン 2.4 および 2.6 (現時点では最新) で有効です。
PS2: @naman の回答によると、バージョン 4.4 で可能になりました。
複合ハッシュ インデックスを実現したい場合は、バージョン 4.4 以降で実現可能です。ドキュメントから、次のように作成できるようになりました。
db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
db.collection.createIndex( { "fieldA" : 1, "fieldB" : "hashed", "fieldC" : -1 } )
問題の特定の例について
db.products.ensureIndex( { "item": "hashed", "stock": 1 } )