Este tutorial descreve como criar índices para limitar o número de entradas de índice verificadas para queries que incluem uma expressão $text e condições de igualdade.
Uma coleção inventory contém os seguintes documentos:
{ _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" }
Considere o caso de uso comum que realiza pesquisas de texto por departamentos individuais , como:
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )
Para limitar a pesquisa de texto para digitalizar somente os documentos dentro de um dept específico, crie um índice composto que primeiro especifique uma chave de índice ascendente/descendente no campo dept e, em seguida, uma chave de índice text no campo description:
db.inventory.createIndex( { dept: 1, description: "text" } )
Em seguida, a pesquisa de texto dentro de um departamento específico limitará a digitalização de documentos indexados. Por exemplo, a query a seguir verifica somente os documentos com dept igual a kitchen:
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )
Observação
Um
textíndice composto não pode incluir nenhum outro tipo de índice especial, como campos de índice geoespacial ou de várias chaves .Se o índice de texto composto incluir chaves que precedem a chave do índice de texto, para usar
$text, o predicado de query deverá incluir condições de correspondência de igualdade nas chaves anteriores.Ao criar um índice composto
text, todas as chaves de índicetextdevem ser listadas adjacentemente no documento de especificação do índice.