2017-02-23 14 views
1

私は3つのコレクションを持っています:ユーザー、投稿、コメント。投稿には複数のコメントがあります。 私は、50件の記事をつかむ作者を移入、コメントを移入が、私は日付(_id)によってソートされた上位2最も投票のコメントのみをしたい質問:投稿スキーマの上位2コメントを入力してください

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

たいと私はこれを達成する方法を知ってはいけません。

答えて

2

mongoose populate optionsを使用して人口をカスタマイズできます。 limitこの場合、2

にこのお試しください:あなたはもっとcusomizationをしたい場合は

Post 
    .find({}) 
    .limit(50) 
    .populate('author') 
    .populate({ 
     path :'comments', 
     options : { 
     sort: { votes: -1 }, 
     limit : 2 
     } 
    }); 

を、あなたは一緒にmongoose Query conditions(マッチ、モデル、パスなどを選択)とoptionsを使用することができます。

詳細についてはMongoose Population documentationをお読みください。

+0

作品のおかげで、: 'ポスト .find({}) .limit(50) .populate( '著者') .populate({ パス:コメント '、 オプション:{ソート: {votes:-1}、limit:2} }); ' – Artur

関連する問題