2013-09-29 2 views
6

Мне нужно найти документы на основе нескольких текстовых полей.Mongoose или запрос

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

Использование вышеуказанных работ отлично. Однако, когда я пытаюсь добавить дополнительное поле, используя

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

не удается получить какие-либо записи. Мне нужно сделать это для еще нескольких полей.

Схема имеет различные текстовые поля, индексированные, но не вместе, как один многополюсный индекс. Будет ли это работать лучше, и если да, то есть ли какие-либо четкие примеры этого? Документация, которую я нашел, была довольно редкой.

Любые идеи?

ответ

9

Поместите оба поля в массив, который передается or:

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

Отдельные показатели одного поля, что вы хотите, как каждый or термин выполнен в виде отдельного запроса.

+0

имеет смысл и исправляет мою проблему. благодаря – user2787799

Смежные вопросы