Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

160
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda