如何获取mongodb中每个类别的最新文章?
问题描述:
我的下一篇文章结构:如何获取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
排序。例如,我有类似电影院,电视,音乐,书籍,我想为每个类别采取最新的文章。是否可以在一个查询中执行?
答
首先创建用于创建的日期和类别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})
也许很少有语法错误
嗯,那是行不通的。如果最后的X篇文章是在Y类中创建的,我必须知道X才能找到下一个类别的第一篇文章。 –
但我需要文章的所有领域被采取,只有日期和category.id –
如果你想所有的领域添加领域_id:{...}像:http://stackoverflow.com/questions/16662405/ mongo-group-query-how-to-keep-fields –