Улучшение Мангуста Население Производительность - PullRequest
0 голосов
/ 05 февраля 2019

Рассмотрим следующий документ

{ 
  lists: {
    list1: [ ObjectId(1), ObjectId(2) ],
    list2: [ ObjectId(1), ObjectId(3) ],
    list3: [ ObjectId(4), ObjectId(5), ObjectId(1)]
  }
}

, в котором содержится массив ссылок на другие коллекции: Products Мне нужны имена всех этих продуктов, когда я возвращаю ответ API.Поэтому я использовал populate

Something.populate({ path:'lists', select: 'name')

Это работает нормально и заполняет списки массивов названием продуктов.Но в режиме отладки mongoose я вижу, что каждый из этих запросов выполняется отдельно.

Product.find({ _id: { $in:[ 1, 2 ]})
Product.find({ _id: { $in:[ 1, 3 ]}) 
Product.find({ _id: { $in:[ 4, 5, 1 ]}) 

В этом списке может быть огромное количество элементов с общими идентификаторами в списках, что означает, что mongoose внутренне запрашивает один и тот же идентификатор несколько раз.

Я также использую cachegoose, но так как это заполненные запросы, значения кэша не влияют на эти запросы.Любое предложение по улучшению этой производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...