В моем приложении есть конечная точка, которая должна находить всех пользователей, которые удовлетворяют некоторым условиям, а затем возвращать результаты в виде массива. Результат отсортирован по дате создания. Теперь мне нужно выполнить более сложную сортировку.
1) Вернуть пользователей, которые сначала загрузили свою фотографию профиля (это главное условие, которое я должен добавить) 2) Кроме того, результаты должны быть отсортированы по дате создания но пользователи с загруженным аватаром всегда должны быть первыми (хотя они и создали учетную запись позже)
Вот мой код:
router.get('/users/:page?', ({ params, query }, response) => {
let { page = 1 } = params;
page = _.parseInt(page);
let { limit = 50 } = query;
limit = _.parseInt(limit);
const skip = page * limit - limit;
User.find({ name: { $exists: true }})
.limit(limit)
.skip(skip)
.sort({ created: 1 })
.exec((error, users) => {
if (error) {
return response.status(500).send('users-couldnt-be-found');
}
response.status(200).send(users);
});
});
Мой пример json коллекция:
[
{ name: 'Jon without avatar', created: '2020-01-28T22:29:48.603Z' }
{ name: 'Jon with avatar', avatar: '/path/to/file', created: '2020-01-28T22:29:48.603Z' }
]
Я пытался использовать aggregate
и group
, но я не совсем понимаю, как это работает. Буду благодарен за любую помощь.