Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

ワイルドカード インデックスの制限

項目一覧

  • 互換性のないインデックスのタイプまたはプロパティ
  • サポートされていないクエリと集計パターン
  • シャーディング

ワイルドカード インデックスは、次のインデックス タイプまたはプロパティをサポートしていません。

  • 複合

  • TTL

  • Text

  • 2 d(地理空間)

  • 2 dsphere(地理空間)

  • ハッシュ

  • Unique

注意

フィールドが存在しない

ワイルドカード インデックスはスパースで、空のフィールドにはインデックスを作成しません。 したがって、ワイルドカード インデックスはフィールドがないドキュメントをサポートできません。

たとえば、コレクションinventoryとワイルドカード インデックスがproduct_attributesにあるコレクションを考えてみましょう。 ワイルドカード インデックスは次のクエリをサポートしていません

db.inventory.find( {"product_attributes" : { $exists : false } } )
db.inventory.aggregate([
{ $match : { "product_attributes" : { $exists : false } } }
])
フィールドはドキュメントまたは配列と等しい

ワイルドカード インデックスは、ドキュメントまたは配列自体ではなく、ドキュメントまたは配列の内容に対してエントリを生成します。 したがって、ワイルドカード インデックスはドキュメント/配列の完全な等価一致をサポートできません。 ワイルドカード インデックスは、フィールドが空のドキュメント{}と等しいクエリをサポートできます。

たとえば、コレクションinventoryとワイルドカード インデックスがproduct_attributesにあるコレクションを考えてみましょう。 ワイルドカード インデックスは次のクエリをサポートしていません

db.inventory.find({ "product_attributes" : { "price" : 29.99 } } )
db.inventory.find({ "product_attributes.tags" : [ "waterproof", "fireproof" ] } )
db.inventory.aggregate([{
$match : { "product_attributes" : { "price" : 29.99 } }
}])
db.inventory.aggregate([{
$match : { "product_attributes.tags" : ["waterproof", "fireproof" ] } }
}])
フィールドはドキュメントまたは配列と等しくない

ワイルドカード インデックスは、ドキュメントまたは配列自体ではなく、ドキュメントまたは配列の内容に対してエントリを生成します。 したがって、ワイルドカード インデックスはドキュメントと配列の不等価一致をサポートできません。

たとえば、コレクションinventoryとワイルドカード インデックスがproduct_attributesにあるコレクションを考えてみましょう。 ワイルドカード インデックスは次のクエリをサポートしていません

db.inventory.find( { $ne : [ "product_attributes", { "price" : 29.99 } ] } )
db.inventory.find( { $ne : [ "product_attributes.tags", [ "waterproof", "fireproof" ] ] } )
db.inventory.aggregate([{
$match : { $ne : [ "product_attributes", { "price" : 29.99 } ] }
}])
db.inventory.aggregate([{
$match : { $ne : [ "product_attributes.tags", [ "waterproof", "fireproof" ] ] }
}])
配列フィールドが null と等しいか null と等しくない

特定のフィールドがコレクション内のいずれかのドキュメントの配列である場合、ワイルドカード インデックスはそのフィールドが等しい、または null と等しくないドキュメントのクエリをサポートできません。

たとえば、コレクションinventoryとワイルドカード インデックスがproduct_attributesにあるコレクションを考えてみましょう。 product_attributes.tagsがコレクション内のいずれかのドキュメントの配列である場合、ワイルドカード インデックスは次のクエリをサポートできません

db.inventory.find( { "product_attributes.tags": { $ne: null } } )
db.inventory.find( { "product_attributes.tags": null } )
db.inventory.aggregate([{
$match : { "product_attributes.tags": { $ne: null } }
}])
db.inventory.aggregate([{
$match : { "product_attributes.tags": null }
}])
フィールドが null に等しい

ワイルドカード インデックスは、フィールドが null に等しいドキュメントのクエリをサポートしていません。 クエリ{ $eq: null }は、 フィールドが null または欠落しているすべてのドキュメントと一致します。 ワイルドカードはスパースであるため、インデックス フィールドが欠落しているドキュメントはインデックスされないため、null との一致をサポートできません。

たとえば、コレクションinventoryとワイルドカード インデックスがproduct_attributesにあるコレクションを考えてみましょう。 ワイルドカード インデックスは次のクエリをサポートしていません。

db.inventory.find( { "product_attributes.price": { $eq: null } } )
db.inventory.aggregate([{
$match : { "product_attributes.price": { $eq: null } }
}])

ワイルドカード インデックスを使用してコレクションをシャーディングすることはできません。 シャーディングしたいフィールドに非ワイルドカード インデックスを作成します。 シャードキー選択の詳細については、「シャードキー 」を参照してください。

戻る

ワイルドカード