Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Cree un índice de texto comodín en implementaciones autogestionadas

Puedes crear un índice de texto que contenga todos los campos de documentos con datos de string en una colección. Estos índices de texto se denominan índices de texto wild-card. Soporte para índices de texto comodín búsqueda de texto en campos desconocidos, arbitrarios o generados dinámicamente.

Para crear un índice de texto comodín, establezca la clave del índice en el especificador de comodín ($**) y establezca el valor de índice en text:

db.<collection>.createIndex( { "$**": "text" } )

Los índices de texto comodín son distintos de índices comodín. Los índices de texto comodín soportan consultas que usan el operador $text, mientras que los índices comodín no.

Nota

$text proporciona capacidades de query de texto para implementaciones autogestionadas (no Atlas). Para los datos alojados en MongoDB Atlas, MongoDB ofrece una solución mejorada de consultas de texto completo, Atlas búsqueda.

Después de crear un índice de texto comodín, al insertar o actualizar documentos, el índice se actualiza para incluir cualquier nuevo valor de campo de string. Como resultado, los índices de texto comodín tienen un impacto negativo en el rendimiento de las inserciones y actualizaciones.

Solo usa los índices de texto comodín cuando los campos que deseas indexar son desconocidos o podrían cambiar. Los índices de texto con comodines no ofrecen el mismo rendimiento que los índices de texto selectivos en campos específicos. Si tu colección contiene nombres de campos arbitrarios que impiden los índices dirigidos, considera remodelar tu esquema para tener nombres de campos coherentes. Para obtener más información sobre índices dirigidos, consulta Crea índices para respaldar tus consultas.

Crea una colección blog con los siguientes documentos:

db.blog.insertMany( [
{
_id: 1,
content: "This morning I had a cup of coffee.",
about: "beverage",
keywords: [ "coffee" ]
},
{
_id: 2,
content: "Who likes chocolate ice cream for dessert?",
about: "food",
keywords: [ "poll" ]
},
{
_id: 3,
content: "My favorite flavors are strawberry and coffee",
about: "ice cream",
keywords: [ "food", "dessert" ]
}
] )

Cree un índice de texto de comodín en la colección blog:

db.blog.createIndex( { "$**": "text" } )

El índice de texto comodín admite consultas de búsqueda de texto en todos los campos de la colección. Considera las siguientes consultas:

Consultar la colección blog por la string coffee:

db.blog.find( { $text: { $search: "coffee" } } )

Salida:

[
{
_id: 1,
content: 'This morning I had a cup of coffee.',
about: 'beverage',
keywords: [ 'coffee' ]
},
{
_id: 3,
content: 'My favorite flavors are strawberry and coffee',
about: 'ice cream',
keywords: [ 'food', 'dessert' ]
}
]

La consulta anterior devuelve todos los documentos que contienen la string coffee en cualquier campo.

Query la colección blog para buscar documentos que contengan la cadena poll o coffee:

db.blog.find( { $text: { $search: "poll coffee" } } )

Salida:

[
{
_id: 1,
content: 'This morning I had a cup of coffee.',
about: 'beverage',
keywords: [ 'coffee' ]
},
{
_id: 3,
content: 'My favorite flavors are strawberry and coffee',
about: 'ice cream',
keywords: [ 'food', 'dessert' ]
},
{
_id: 2,
content: 'Who likes chocolate ice cream for dessert?',
about: 'food',
keywords: [ 'poll' ]
}
]

La query anterior devuelve documentos que contienen la string poll o coffee en cualquier campo.

Query la colección blog para documentos que contengan la string exacta chocolate ice cream:

db.blog.find( { $text: { $search: "\"chocolate ice cream\"" } } )

Salida:

[
{
_id: 2,
content: 'Who likes chocolate ice cream for dessert?',
about: 'food',
keywords: [ 'poll' ]
}
]

La query precedente devuelve documentos que contienen la cadena exacta chocolate ice cream en cualquier campo.

Volver

Cree un índice de texto

En esta página