Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

156
Views
¿Existe una manera fácil de implementar un filtro de campos múltiples en MongoDB que incluya la coincidencia parcial de cadenas?

Actualmente estoy intentando implementar un filtro de campos múltiples en una base de datos MongoDB que consta de problemas con múltiples campos. Estoy aprendiendo del libro "Pro MERN Stack" de Vasan Subramanian, pero su filtro multicampo no incluye el filtrado por un valor de cadena. Me gustaría que mi filtro String filtre las coincidencias parciales, no solo las coincidencias exactas. Por ejemplo, si un título es "Hola mundo", me gustaría que la consulta "Hola" coincida con este título. Incluí mi código JS funcional que actualmente solo funciona si la entrada del título coincide exactamente con el campo de título de un problema en el backend.

Intenté anteponer el título con un '/' y agregarlo con un '/i', y cuando imprimo el filtro usando console.log genera { title: '/Hello/i' } . Sin embargo, si solo codifico la línea y elimino las comillas simples alrededor del argumento para .find() escribiendo la línea como const issues = await db.collection('issues').find({title: /Hello/i }).toArray(); funciona en coincidencias parciales. ¿Hay alguna manera fácil de resolver este problema?

 async function list(_, { status, effortMin, effortMax, title, }) { const db = getDb(); const filter = {}; if (status) filter.status = status; if (title) filter.title = title; if (effortMin !== undefined || effortMax !== undefined) { filter.effort = {}; if (effortMin !== undefined) filter.effort.$gte = effortMin; if (effortMax !== undefined) filter.effort.$lte = effortMax; } const issues = await db.collection('issues').find(filter).toArray(); return issues; }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

MongoDB ya proporciona una solución que permite la funcionalidad de búsqueda avanzada Atlas Search

El proceso requiere que cree un índice para sus consultas de búsqueda, de modo que las consultas que requieran la funcionalidad de búsqueda avanzada tendrán que hacer referencia a ellas.

Creación de índices de búsqueda de Atlas

Dado que está interesado en hacer coincidir parcialmente los campos con su documento, el campo de autocompletar es lo que desea definir al crear su índice

 { $search: { "index": "<index name>", // optional, defaults to "default" "autocomplete": { "query": "<search-string>", "path": "<field-to-search>", "tokenOrder": "any|sequential", "fuzzy": <options> } } }

Preste atención al objeto fuzzy , ya que permite un control preciso sobre cómo se empareja la búsqueda.

fuzzy.maxEdits Número máximo de ediciones de un solo carácter necesarias para que coincida con el término de búsqueda especificado. El valor puede ser 1 o 2.

fuzzy.prefixLength Número de caracteres al comienzo de cada término en el resultado que debe coincidir exactamente.

Documentación de Autocompletar

Una vez completada la creación del índice, deberá realizar consultas utilizando la etapa de canalización de agregación $search de la siguiente manera

 { $search: { "index": "<index-name>", "autocomplete": { "query": "<search-string>", "path": "<field-to-search>" } } }

Documentación de etapa de canalización de agregación de $búsqueda

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!