Saltar al contenido

MongoDB: cómo encontrar documentos ignorando mayúsculas y minúsculas, acentos y porcentaje como lógica (%)

Te doy la bienvenida a nuestra comunidad, ahora hallarás la solucíon que estabas buscando.

Solución:

¿Qué pasó si usas solo:

find(name: $regex: 'pala', $options: "i")

usaste new Regex() que puede no ser un constructor válido un constructor válido es new RegExp()

¡Esto funciona para mí!

Simplemente reemplace las vocales con una expresión regular que contenga acentos de vocales. Adicionalmente puede usar $options: 'i' para evitar mayúsculas y minúsculas.

function diacriticSensitiveRegex(string = '') 
         return string.replace(/a/g, '[a,á,à,ä]')
            .replace(/e/g, '[e,é,ë]')
            .replace(/i/g, '[i,í,ï]')
            .replace(/o/g, '[o,ó,ö,ò]')
            .replace(/u/g, '[u,ü,ú,ù]');
    

find ( name:  $regex: diacriticSensitiveRegex('pala'), $options: 'i'  );

No hay una varita mágica aquí dentro de MongoDb. Pero dado que obviamente cambia la entrada del usuario de todos modos para crear ‘% pala%’, ¿por qué no reemplazar “a” con “[aá]” y envuélvalo en “.*”, de esta manera puede usar expresiones regulares y tener sus signos diacríticos.

Aquí hay opciones que no requieren mucho trabajo para crear reemplazos.

letras francesas
[a-zA-ZàâäôéèëêïîçùûüÿæœÀÂÄÔÉÈËÊÏΟÇÙÛÜÆŒ]

Letras alemanas La controvertida letra mayúscula ß, ahora incluida en Unicode, no se encuentra en muchas fuentes, por lo que podría aparecer en la pantalla como un signo de interrogación.
[a-zA-ZäöüßÄÖÜẞ]

letras polacas
[a-pr-uwy-zA-PR-UWY-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]
Tenga en cuenta que no hay Q, V y X en polaco. Pero si desea permitir también todas las letras en inglés, use [a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]

letras italianas
[a-zA-ZàèéìíîòóùúÀÈÉÌÍÎÒÓÙÚ]

letras españolas
[a-zA-ZáéíñóúüÁÉÍÑÓÚÜ]
de http://www.rexegg.com/regex-interesting-character-classes.html#languages

Si piensas que te ha resultado provechoso este artículo, te agradeceríamos que lo compartas con otros programadores y nos ayudes a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *