MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose:потърсете пълно име с регулярен израз

Разделете думата за търсене по думи и ги разделете с помощта на оператор за редуване ('|').

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

За входа 'John Smith' , това ще създаде регулярен израз, който изглежда като /John|Smith/ig . Това ще върне true за отделни думи, както и ще работи, когато въведеното е само 'John Sm'

Можете да разиграете с този регулярен израз, за ​​да получите друг, по-подходящ за вашите нужди.

РЕДАКТИРАНЕ:

Проблемът тук е, че вашите полета за име са отделни. В този случай прилагането на един и същ регулярен израз към двете полета няма да доведе до желаните резултати. Регулярният израз трябва да се приложи към същото поле с пълното име.

Възможно решение е използването на агрегиране:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Сиатъл 2014

  2. meteor качете файл в mongodb

  3. Как да вмъкнете изображения в mongoDB с помощта на java?

  4. Получаване на времеви печат на unix за секунди от MongoDB ISODate по време на агрегиране

  5. Удостоверяването на командния ред на обвивката на MongoDB е неуспешно