2015-11-05 61 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 –

相关问题