Я хотел бы улучшить свой метод поиска, который должен быть нечувствительным к регистру. В моей настройке есть пять разных коллекций, и я хочу найти поле title
. Также мне нужно получить частичные результаты (минимум 3 символа).MongoDB: Оптимизированный поиск нескольких коллекций
Пример
// Collection 1
{ title: 'Sample' },
{ title: 'Another sample' }
{ title: 'This is an example' }
// Collection 2
{ title: 'Something else' },
{ title: 'A sample document' }
{ title: 'This is another example' }
Ample
: Все документы, за исключением первого из 2-ой коллекцииSample
: Первые два документа сбора 1 и второй из коллекции 2another
: Второй сборник документов 1is
: Не следует указывать Результат (< 3 символов)
До сих пор я сделал с этим
db.collection.find({ title: new RegExp(value, 'i') }).fetch()
... для каждой коллекции и объединить результаты в один массив.
Но я думаю, что это не оптимально, поскольку используется регулярное выражение, а также все документы должны быть найдены db.
Итак, я перешел на полнотекстовый поиск. Я добавил индекс title
и попытался это:
db.collection.find({ $text: { $search: value } }).count()
Но тогда Samp
даже не дает мне первый документ.
И последнее, но не менее важное: я не знаю, как выполнить поиск всех пяти коллекций, чтобы получить все совпадения в качестве одного результата.