Есть ли способ сортировки по заданному массиву?
что-то вроде этого:
const somes = await SomeModel.find({}).sort({'_id': {'$in': [ObjectId('sdasdsd), ObjectId('sdasdsd), ObjectId('sdasdsd)]}}).exec()
То, что я ищу, - это способ получить решение, получить весь документсбор и сортировка, если _id документа совпадает с одним из заданного массива.
Пример:
у нас есть коллекция альбомов и коллекция песен.В коллекции альбомов мы храним идентификаторы песен, которые принадлежат альбомам.
Я хочу получить песни, но если песня находится в альбоме, возьмите их перед массивом.
Я решил это следующим образом, но выглядит немного странно:
const songs = await SongMode.find({}).skipe(limit * page).limit(limit).exec();
const album = await AlbumModel.findById(id).exec();
if(album) {
songArr = album.songs.slice(limit * page);
for(let song of album.songs) {
songs.unshift(song);
songs.pop();
}
}