Легкий способ упорядочить результат после того, как mongo возвращает массив, состоит в том, чтобы сделать объект с идентификатором в качестве ключей, а затем отобразить на заданный _id, чтобы вернуть упорядоченный массив.
async function batchUsers(Users, keys) {
const unorderedUsers = await Users.find({_id: {$in: keys}}).toArray()
let obj = {}
unorderedUsers.forEach(x => obj[x._id]=x)
const ordered = keys.map(key => obj[key])
return ordered
}
Вот решение, которое я в конечном счете использовал:
, Это просто невероятно быстрее, чем sqlite, даже при том, что это - код Perl низкого уровня, и Perl действительно не предназначен для высокопроизводительных баз данных. Это не будет работать ни с чем, что это менее равномерно распределено, чем MD5, его предположение, что все будет чрезвычайно универсально для хранения реализации простой.
я попробовал его, ищут ()/sysread ()/syswrite () сначала, и это было очень медленно, mmap (), версия действительно намного быстрее.
Я испытал некоторые затруднения при изображении точной проблемы/потребности, но это все еще получило меня думающий о Мерзавце и как это хранит SHA1-ссылки на диске:
Берут представление шестнадцатеричной строки данного хеша, скажем, "abfab0da6f4ebc23cb15e04ff500ed54
". Прервите два первых символа в хеше (" ab
", в нашем случае), и превратите его в каталог. Затем используйте остальных (" fab0da6f4ebc23cb15e04ff500ed54
"), создайте файл и поместите материал в него.
Таким образом, Вы получаете довольно достойную дисковую производительность (в зависимости от Вашего FS, естественно) с автоматическим индексированием. Кроме того, Вы получаете прямой доступ к любому известному хешу, только путем втискивания разделителя каталога после двух первых символов (" ./ab/fab0da
[..]")
я сожалею, если я пропустил шар полностью, но с любой удачей, это могло бы дать Вам общее представление.
Два алгоритма появляются по моему мнению сначала:
С тех пор для хеша необходимо использовать произвольный доступ, я сомневаюсь, что любая база данных даст Вам достойную производительность. Ваш лучший выбор мог бы быть к дисковому кэшу (больше RAM) и получить жесткие диски с очень высокой скоростью произвольного доступа (возможно, твердотельные диски).