sql >> Base de Datos >  >> NoSQL >> MongoDB

Mangosta:consulta el nombre completo con expresiones regulares

Separe el término de búsqueda por palabras y sepárelos usando un operador de alternancia ('|').

var terms = req.params.search.split(' ');

var regexString = "";

for (var i = 0; i < terms.length; i++)
{
    regexString += terms[i];
    if (i < terms.length - 1) regexString += '|';
}

var re = new RegExp(regexString, 'ig');

Para la entrada 'John Smith' , esto creará una expresión regular que se parece a /John|Smith/ig . Esto devolverá verdadero para palabras individuales y funcionará cuando la entrada sea solo 'John Sm'

Puedes jugar con esta expresión regular para obtener una más adecuada a sus necesidades.

EDITAR:

El problema aquí es que los campos de su nombre están separados. En este caso, aplicar la misma expresión regular a ambos campos no dará los resultados que desea. La expresión regular debe aplicarse al mismo campo con el nombre completo.

Una posible solución es usar la agregación:

User.aggregate()
    .project({fullName: {$concat: ['$firstName', ' ', '$lastName']}})
    .match({fullName: re})