Как при запросе к Mongo отфильтров. записи, а потом снова отфильтров. по др. парам.
На бэке юзается Node, Mongoose и Mongo. Подскажите как мне составить запрос таким образом, чтобы записи искались по БД сперва по одному параметру, а потом то что нашлось снова было отфильтровано по другому параметру?
Сейчас код выглядит так:
posts = await Post.find({
$or:[
{title: new RegExp(search, 'ig')},
{text: new RegExp(search, 'ig')},
{category: new RegExp(category, 'ig')}
]
})
А мне нужно, чтобы записи нашлись по тому что прилетает в search, а потом были отфильтрованы по тому что прилетело в category. Заранее спасибо |
Получаешь из posts массив (await posts.toAtrray(), кажется. Сам посмотри доки). А потом фильтруешь его обычным .filter
|
Цитата:
Mongoose не используем... Используем mongojs, но сути это наверняка не меняет.
db.test.find(query).sort({key1: 1, key2: -1})
|
Цитата:
|
Цитата:
|
Цитата:
Теперь про фильтрацию - ее же можно сразу сделать как нужно, с учетом обоих значений. Пока не понятно зачем брать больше, а потом это все еще раз фильтровать? |
Цитата:
Алогорим такой: - нашли статьи по категории - в эти найденных статьях нашли статьи, в которых содержится искомое слово Если это будет 1 запрос -- это то, что мне нужно |
Цитата:
{
category: new RegExp(category, 'ig'),
$or:[
{title: new RegExp(search, 'ig')},
{text: new RegExp(search, 'ig')},
]
}
Т.е. ты расскажи чего хочешь искать в итоге? |
Цитата:
Хочу в БД найти статьи, который содержат указанную категорию и истомый текст. В постмане это выглядит так: https://ibb.co/qmxrh7H |
Цитата:
Если как сначала был вопрос Цитата:
А если Цитата:
Каков вопрос, таков ответ. |
| Часовой пояс GMT +3, время: 00:50. |