Мангуст или запрос

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

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

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

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

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

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

какие идеи?

1 ответов


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

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

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