我的博客平台使用 mongodb,用户可以在其中创建自己的博客。所有博客的所有条目都在条目集合中。条目的文档如下所示:
{
'blog_id':xxx,
'timestamp':xxx,
'title':xxx,
'content':xxx
}
正如问题所说,有没有办法为每个博客选择最后 3 个条目?
最佳答案
您需要首先按 blog_id
和 timestamp
字段对集合中的文档进行排序,然后执行一个初始组,以降序创建原始文档的数组.之后,您可以使用文档对数组进行切片以返回前 3 个元素。
在这个例子中可以遵循直觉:
db.entries.aggregate([
{ '$sort': { 'blog_id': 1, 'timestamp': -1 } },
{
'$group': {
'_id': '$blog_id',
'docs': { '$push': '$$ROOT' },
}
},
{
'$project': {
'top_three': {
'$slice': ['$docs', 3]
}
}
}
])
关于mongodb - 从每个组中选择前 N 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498506/