如何在mongodb中获取每个类别的最新文章?

时间:2015-11-05 22:25:24

标签: javascript mongodb mongoose aggregation-framework

我有下一篇文章结构:

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 个答案:

答案 0 :(得分: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})

可能没有语法错误