MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose:zapytanie o pełne imię i nazwisko z wyrażeniem regularnym

Oddziel wyszukiwane słowa słowami i oddziel je za pomocą operatora alternatywy ('|').

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

Dla danych wejściowych 'John Smith' , utworzy to wyrażenie regularne, które wygląda jak /John|Smith/ig . To zwróci true dla pojedynczych słów, a także zadziała, gdy dane wejściowe to po prostu 'John Sm'

Możesz pobawić się z tym wyrażeniem regularnym, aby uzyskać jedno bardziej dopasowane do Twoich potrzeb.

EDYCJA:

Problem polega na tym, że pola twojego nazwiska są oddzielne. W takim przypadku zastosowanie tego samego wyrażenia regularnego do obu pól nie przyniesie pożądanych wyników. Wyrażenie regularne należy zastosować do tego samego pola z pełną nazwą.

Możliwym rozwiązaniem jest użycie agregacji:

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. Zapytanie Mongo do sortowania według odrębnej liczby

  2. Jak powiedzieć... dopasuj, gdy pole jest liczbą... w mongodb?

  3. Grupuj według wartości i warunków

  4. MongoDB 2.4.1 jest już dostępny w ScaleGrid

  5. Wiosenna paginacja danych mongo