2015-11-05 50 views
0

我的下一篇文章結構:如何獲取mongodb中每個類別的最新文章?

var articleSchema=new Schema({ 
    id : Number, 
    title : String, 
    sefriendly : String, 
    created : Date, 
    categories: [ 
     { 
      id: Number, 
      name: String, 
      sefriendly: String, 
      image: String 
     } 
    ], 
    author: { 
     id: Number, 
     name: String 
    } 
}); 

所以,我要的是把一個最新的文章created場一組categoryIds排序。例如,我有類似電影院,電視,音樂,書籍,我想爲每個類別採取最新的文章。是否可以在一個查詢中執行?

回答

1

首先創建用於創建的日期和類別ID索引:

db.article.ensureIndex({ 「創造」: - 1, 「categories.id」:1})

然後採取最新文章:

db.article.aggregate( [ {$unwind : "$categories"}  { $sort: {"created":-1,"categories.id":1 } },  {  $group:   {   _id: {"categories_id":"$categories.id"},   lastDate: { $last: "$created" }   }  } ] ,{"allowDiskUse":true}) 

也許很少有語法錯誤

+0

嗯,那是行不通的。如果最後的X篇文章是在Y類中創建的,我必須知道X才能找到下一個類別的第一篇文章。 –

+0

但我需要文章的所有領域被採取,只有日期和category.id –

+0

如果你想所有的領域添加領域_id:{...}像:http://stackoverflow.com/questions/16662405/ mongo-group-query-how-to-keep-fields –

相關問題