У меня есть 3 коллекции: пользователь, сообщение и комментарий. Сообщения имеют несколько комментариев. Я хочу, чтобы захватить 50 сообщений, заселить автор, заполнить комментарии, но я хочу только топ-наиболее голосовали комментарии, отсортированные по дате (_id)Mongoose query: populate top 2 комментария из Post Schema
const PostSchema = new Schema({
author: {
type: Schema.Types.ObjectId,
ref: 'User'
},
content: String,
comments: [{
type: Schema.Types.ObjectId,
ref: 'Comment'
}]
});
const Post = mongoose.model('Post', PostSchema);
const CommentSchema = new Schema({
author: {
type: Schema.Types.ObjectId,
ref: 'User'
},
content: String,
votes: Number
});
const Comment = mongoose.model('Comment', CommentSchema);
Post
.find({})
.limit(50)
.populate('author')
.populate('comments')
...
, и я не знаю, как этого добиться.
Спасибо, что работает: 'Post .find ({}) .limit (50) .populate ('автор') .populate ({ путь: 'комментарии', варианты: {сортировать: {голосов: -1}, limit: 2} }); ' – Artur