我有3个收藏:用户,帖子和评论。帖子有多条评论。 我想抓50个帖子,填充作者,填充评论,但我只想按日期排序前2个最多投票评论(_id)
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')
...
我不知道如何实现这一点。
答案 0 :(得分:2)
您可以使用mongoose populate options
来自定义人口。在这种情况下,limit
为2。
试试这个:
Post
.find({})
.limit(50)
.populate('author')
.populate({
path :'comments',
options : {
sort: { votes: -1 },
limit : 2
}
});
如果您想要更多cusomization,可以使用mongoose Query conditions
(选择,匹配,模型,路径等)和options
。
阅读Mongoose Population documentation以获取更多详细信息。