Мангуста индексы для лидеров - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть схема Мангуста, которая имеет 4 свойства для нескольких таблиц лидеров (каждая таблица лидеров по songId):

{
u: {
  type: String,
  unique: false,
  required: true,
  alias: 'userId'
},
n: {
  type: String,
  unique: false,
  required: true,
  alias: 'name'
},
s: {
  type: String,
  unique: false,
  required: true,
  alias: 'songId'
},
sc: {
  type: Number,
  unique: false,
  required: true,
  alias: 'score'
}
}

Для данного songId я должен получить 10 лучших пользователей (отсортировать по количеству баллов), идля заданного списка songId и userIds я должен получить список 10 лучших пользователей для списка (сортировка по баллам).

Вот мои индексы:

Score.index({ u: 1, s: -1 }, { unique: true });
Score.index({ s: 1 }, { unique: false });

И вот 2 запроса соответственно:

const worldPromise = Score.find({ s: songId }).sort({ sc: -1 }).limit(10).exec();
const friendsPromise = Score.find({ s: songId, u: { $in: friendsArr } }).sort({ sc: -1 }).limit(10).exec();

где friendsArr в массиве идентификаторов и sondId - это идентификатор песни.

Мой вопрос заключается в том, правильно ли оптимизированы и проиндексированы мои запросы, или я должен сделать что-то по-другому?

...