Я создаю приложение чата с разными группами.Поэтому я использую коллекцию в Mongodb (один для всех групп).Это моя схема сообщений:
const MessageSchema = mongoose.Schema({
groupId: Number,
userId: Number,
messageIat: Date,
message: String,
reactions: []
});
Допустим, я хочу загрузить последние 50 сообщений группы с идентификатором 10. Для сортировки сообщений я использую ObjectId по умолчанию.Я использую следующий запрос.Мне кажется, что я загружаю все сообщения группы 10, затем сортирую их, чтобы обеспечить порядок, а затем я могу ограничить результаты.Но это кажется мне не очень эффективным.Если есть много сообщений, это будет стоить довольно много времени, верно?
return Message.find({groupId:10}).sort( {_id: -1 }).limit(50)
Сначала я попытался выполнить операцию лимита, но потом я не могу рассчитывать на порядок, так как же начатьэтот?Чаще ли разбивать его, чтобы иметь коллекцию для каждой группы?
Спасибо за помощь.