Mongoose查询:填充Post Schema的前2条评论

时间:2017-02-23 08:50:34

标签: node.js mongodb mongoose mongodb-query mongoose-populate

我有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')
  ...

我不知道如何实现这一点。

1 个答案:

答案 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以获取更多详细信息。