作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的收藏中有以下文档
{
"_id": ObjectId("54490b8104f7142f22ecc97f"),
"title": "Sample1",
"slug": "samplenews",
"cat": "sports",
"desc": "sampletextsampletext",
"published_date": ISODate("2014-10-23T14:06:57.0Z"),
} {
"_id": ObjectId("54490b8104f7142f22ecc97f"),
"title": "Sample2",
"slug": "samplenews2",
"category": "entertaintment",
"desc": "sampletextsampletext",
"published_date": ISODate("2014-10-22T14:06:57.0Z"),
} {
"_id": ObjectId("54490b8104f7142f22ecc97f"),
"title": "Sample3",
"slug": "samplenews3",
"category": "entertaintment",
"desc": "sampletextsampletext",
"published_date": ISODate("2014-9-22T14:06:57.0Z"),
} {
"_id": ObjectId("54490b8104f7142f22ecc97f"),
"title": "Sample4",
"slug": "samplenews4",
"category": "other",
"desc": "sampletextsampletext",
"published_date": ISODate("2014-10-22T14:06:57.0Z"),
}
我需要一个查询来获取每个类别的前 5 条最新新闻。有什么建议吗?
最佳答案
假设您安装了最新版本的 mongodb,一种方法是:
published_date
按降序对记录进行排序
。类别
对记录进行分组
。对于每个组,将所有记录收集到一个数组中。切片
。$slice
在服务器端 $project
聚合管道运算符中不可用,这使我们无法在服务器端执行操作。
var result = db.collection.aggregate(
[
{$sort:{"published_date":-1}},
{$group:{"_id":"$category","values":{$push:"$$ROOT"}}}
]
).map(function(doc){
return {"category":doc._id,"records":doc.values.slice(0,5)};
});
result
变量现在将是一个文档数组。每个文档代表每个类别
,并依次具有一个由前5
记录组成的数组。
关于javascript - 蒙戈聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26532609/
我是一名优秀的程序员,十分优秀!