Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

433
Vistas
¿Cómo crear un índice para la búsqueda de texto parcial en MongoDB?

Estoy siguiendo las instrucciones del tutorial: https://docs.mongodb.com/manual/core/index-text/

Estos son los datos de muestra:

 db.stores.insert( [ { _id: 1, name: "Java Hut", description: "Coffee and cakes" }, { _id: 2, name: "Burger Buns", description: "Gourmet hamburgers" }, { _id: 3, name: "Coffee Shop", description: "Just coffee" }, { _id: 4, name: "Clothes Clothes Clothes", description: "Discount clothing" }, { _id: 5, name: "Java Shopping", description: "Indonesian goods" } ] )

Caso 1: db.stores.find( { $text: { $search: "java coffee shop" } } ) => ENCONTRADO

Caso 2: db.stores.find( { $text: { $search: "java" } } ) => ENCONTRADO

Caso 3: db.stores.find( { $text: { $search: "coff" } } ) => NO ENCONTRADO

Espero que se ENCUENTRE el caso 3 porque la consulta coincide con una parte de java coffee shop

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El caso 3 no funcionará con el operador $texto y la razón es cómo Mongo crea índices de texto.

Mongo toma valores de campos indexados de texto y crea índices separados para cada palabra única en cadena y no carácter (!).

entonces esto significa que en su caso para 1 objeto:

el nombre del campo tendrá 2 índices:

  • Java
  • cabaña

la descripción del campo tendrá 3 índices:

  • café
  • y
  • tortas

El operador de $texto compara los valores de $búsqueda con estos índices y es por eso que "coff" no funcionará.

Si desea aprovechar las ventajas de los índices, debe usar el operador $text, pero no le brinda toda la flexibilidad, tal como lo desea.

solución :

Simplemente puede usar $regex con la opción de distinción entre mayúsculas y minúsculas (i) y optimizar su consulta con omitir y limitar.

Si desea devolver todos los documentos y la colección es grande, $regex causará un problema de rendimiento

también puede consultar este artículo https://medium.com/coding-in-depth/full-text-search-part-1-how-to-create-mongodb-full-and-partial-text-search-c09c0bae17a3 y tal vez use índices comodín para eso, pero no sé si es una buena práctica o no.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda