sql >> Database >  >> NoSQL >> MongoDB

Mongoose:volledige naam opvragen met regex

Scheid de zoekterm met woorden en scheid ze met een alternatie-operator ('|').

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');

Voor de invoer 'John Smith' , zal dit een regex maken die eruitziet als /John|Smith/ig . Dit wordt true geretourneerd voor individuele woorden en werkt ook wanneer de invoer slechts 'John Sm' is

Je kunt rondspelen met deze regex om er nog een te krijgen die aan uw behoeften voldoet.

BEWERKEN:

Het probleem hier is dat uw naamvelden gescheiden zijn. In dit geval zal het toepassen van dezelfde regex op beide velden niet de gewenste resultaten opleveren. De regex moet worden toegepast op hetzelfde veld met de volledige naam.

Een mogelijke oplossing is het gebruik van aggregatie:

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



  1. Lente Mongodb Tijdstempel Tijdzone Misleidend

  2. MongoDB en samengestelde primaire sleutels

  3. Kan ik voor elke geaggregeerde zoekopdracht in MongoDB een aanvraag indienen?

  4. Hoe de mongodb-server op Windows te stoppen?