Мне нужна ваша помощь. "Как мне искать документы в коллекции по массиву ObjectIDs
по их индексу?
У меня есть массив, содержащий идентификаторы плейлистов. Они добавляются в строгом порядкеМне нужно найти их в том же порядке по индексу, как они есть. Я попытался использовать оператор $in
, и он находит все правильно, но не в том порядке, в котором они хранятся в массиве. Можно лисделать, чтобы этот заказ был соблюден?
const playlisIds = [
"5d8b4540a4f4ee24a40c8359",
"5d8b47b1a4f4ee24a40c835e",
"5d8e1457a513c112c0d8b42f",
"5d8e1441a513c112c0d8b42a"
];
const playlists = await Playlist.find({ _id: {$in: playlisIds } })
playlists = [
{
_id: "5d8e1441a513c112c0d8b42a", //index 3 in playlisIds
// ...other fields``
},
{
_id: "5d8b47b1a4f4ee24a40c835e" //index 1 in playlisIds
// ...other fields
},
{
_id: "5d8b4540a4f4ee24a40c8359" //index 0 in playlisIds
// ...other fields``
},
{
_id: "5d8e1457a513c112c0d8b42f" //index 2 in playlisIds
// ...other fields
}
]
Поиск по одному документу за один раз будет очень дорогим.
const playlists = playlisIds.map(async (id) => await Playlist.findById(id)) // not good practice ((
const playlisIds = [
"5d8b4540a4f4ee24a40c8359",
"5d8b47b1a4f4ee24a40c835e",
"5d8e1457a513c112c0d8b42f",
"5d8e1441a513c112c0d8b42a"
];
const playlists = await Playlist.find({ _id: {$in: playlisIds } })
playlists = [
{
_id: "5d8b4540a4f4ee24a40c8359", //index 0 in playlisIds
// ...other fields
},
{
_id: "5d8b47b1a4f4ee24a40c835e"//index 1 in playlisIds
// ...other fields
},
{
_id: "5d8e1457a513c112c0d8b42f"//index 2 in playlisIds
// ...other fields
},
{
_id: "5d8e1441a513c112c0d8b42a"//index 3 in playlisIds
// ...other fields
},
]
Я надеюсь, что он будет похож на выше.