2016-12-05 21 views
2

だから、私は3人のブロガーがいるとしましょう。それぞれにはたくさんの投稿があります。コレクション内の各ブロガーの最新投稿を選択してください

それぞれ最新の投稿を選択します。

現在、私は、この擬似コードを持っている:

ここ
Bloggers.find({name: {$in: ['John','Mike','Arny']}}, (err, bloggers) => { 
    bloggers.forEach(blogger => { 
     blogger.latest_post = Posts.find({author: blogger.name}).sort({date: -1}).limit(1); 
    }) 
    displayItSomehow(bloggers); 
}) 

、ブロガーの名前は、グループの名前です。各グループには多数のドキュメントがありますが、いくつかの基準に合わせて1つだけ必要です。

このようなブロガーコレクション:

{name: 'John', id: 1}, 
{name: 'Mike', id: 2}, 
{name: 'Arny', id: 3} 

投稿コレクション:

{ title: 'title1', text: 'blablabla', date: 111, author: 1 }, 
{ title: 'Nowadays football became...', text: 'blablabla', date: 112, author: 1 }, 
{ title: 'title1', text: 'blablabla', date: 113, author: 2 }, 
{ title: 'The story of my neighbor starts when...', text: 'blablabla', date: 114, author: 2 }, 
{ title: 'title1', text: 'blablabla', date: 115, author: 3 }, 
{ title: 'title1', text: 'blablabla', date: 116, author: 3 }, 
{ title: 'Business and success are always were...', text: 'blablabla', date: 117, author: 3 } 

結果は次のようにする必要があります:

John:  'Nowadays football became...' 

Mike:  'The story of my neighbor starts when...' 

Arny:  'Business and success are always were...' 

だから、どのように私はマングースに実際に私の問題を解決することができます? 1つのクエリで可能ですか? http://mongoosejs.com/docs/api.html#model_Model.populate

あなたBloggersを定義する場合にのみ、動作します。ここでは

Bloggers 
    .find({name: {$in: ['John','Mike','Arny']}}) 
    .populate({ 
     path: 'posts', 
     options: { 
      limit: 1, 
      sort: {date: -1} 
     } 
    }) 
    .exec((err, bloggers) => { 
     displayItSomehow(bloggers); 
    }) 
}) 

が移入機能にconfigオブジェクトのためのドキュメントへのリンクです:

+1

ブロガーと投稿の投稿にサンプルコレクションを追加してください – Veeram

+0

帽子はよかった?) –

答えて

0

クエリpopulationは、あなたが探しているものですそれに応じてスキーマ:

var bloggerSchema = Schema({ 
    _id  : Number, 
    name : String, 
    // all your other fields... 
    posts: [{ type: Schema.Types.ObjectId, ref: 'Post' }] 
}); 
関連する問題