2013-09-29 15 views
6

Potrzebuję znaleźć dokumenty na podstawie wielu pól tekstowych.Mongoose lub zapytanie

var term = new RegExp(req.query.search, 'i'); 
.find({ company_name: { $regex: term }}); 

Korzystanie z powyższych działa świetnie. Jednak gdy próbuję dodać dodatkowe pole przy użyciu nie można pobrać żadnych rekordów. Muszę to zrobić dla kilku dodatkowych pól.

Schemat ma różne pola tekstowe zindeksowane, ale nie razem jako pojedynczy indeks wielu pól. Czy to działa lepiej, a jeśli tak, czy istnieją jakieś wyraźne tego przykłady? Dokumentacja, którą znalazłem, była dość skąpa.

Wszelkie pomysły?

Odpowiedz

9

Włóż oba pola do tablicy, który jest przekazywany do or:

.find().or([{ company_name: { $regex: term }}, { bio: { $regex: term }}]); 

oddzielne indeksy pojedynczych pól są co chcesz, jak każdy or termin jest wykonana jako oddzielny zapytania.

+0

ma sens i rozwiązuje mój problem. dzięki – user2787799

Powiązane problemy