自己管理型配置でスキャンされたテキストインデックスのエントリ数の制限
このチュートリアルでは、 $text
式と等価条件を含むクエリでスキャンされるインデックスエントリの数を制限するインデックスの作成方法について説明します。
コレクション inventory
には次のドキュメントが含まれています。
{ _id: 1, dept: "tech", description: "lime green computer" } { _id: 2, dept: "tech", description: "wireless red mouse" } { _id: 3, dept: "kitchen", description: "green placemat" } { _id: 4, dept: "kitchen", description: "red peeler" } { _id: 5, dept: "food", description: "green apple" } { _id: 6, dept: "food", description: "red potato" }
次のような個々の部門ごとにテキスト検索を実行する一般的なユースケースを考えてみましょう。
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )
テキスト検索を特定のdept
内のドキュメントのみをスキャンするように制限するには、最初にフィールドdept
に昇順または降順のインデックスキーを指定し、次に フィールドdescription
にtext
インデックスキーを指定する複合インデックスを作成します。 :
db.inventory.createIndex( { dept: 1, description: "text" } )
次に、特定の部門内のテキスト検索によって、インデックス付きドキュメントのスキャンが制限されます。 たとえば、次のクエリは、 dept
がkitchen
に等しいドキュメントのみをスキャンします。
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )