@ascold2013

Как ограничить количество документов в выборке mongoose?

Здравствуйте! Пытаюсь сделать скрипт выборки из БД c помощью mongoose. Что я хочу сделать - есть коллекция, в которой лежат посты, имеющие разные категории. Мне нужно получить посты из каждой категории, причем по 5 штук. limit() не подходит, т.к существенно усложнится код (нужно находить в текущей категории, ждать ответ, следующая - можно же проще?)
Я сделал так:
const Posts = mongoose.model('post');
    const Categories = mongoose.model('category');
    // create request obj
    const findPostsRequest = (categories) => {
        if (!categories.length) return {};
        let request = { $or: [] };
        categories.map(category => {
            request.$or.push({ 'categories.link': category.link });
        });
        console.log(request);
        return request;
    };
    // find all categories
    Categories.find()
        .then(categories => {
            // find 5 posts in every category from categories
            Posts.find(findPostsRequest(categories))
                .then(posts => {
                    res.status(201).json(posts);
                })
                .catch(err => {
                    res.send({
                        message: `Ой ошибка:  + ${err.message}`
                    });
                });
        })
        .catch(err => {
            res.status(400).json({
                message: `При получени записей произошла ошибка:  + ${err.message}`
            });
        });

Т.е - мы получаем все категории, а потом в один запрос массивом ИЛИ добавляем условия категории. Мне нужно куда то впихнуть $slice, но я так и не понял куда. Нужно из каждой категории 5 постов достать. Как это сделать?
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы