例如,我有一个收藏:
{ "_id" : 1, "name" : "abc", "score" : 10 }
{ "_id" : 2, "name" : "abc", "score" : 15 }
{ "_id" : 3, "name" : "abc", "score" : 20 }
{ "_id" : 4, "name" : "xyz", "score" : 10 }
{ "_id" : 5, "name" : "xyz", "score" : 15 }
{ "_id" : 6, "name" : "xyz", "score" : 20 }
如何在MongoDB中进行查询以按name
分组,然后按分数
排序并以限制=2
进行。我想得到这样的:
{"_id": "abc", "items": [
{ "_id" : 3, "name" : "abc", "score" : 20 },
{ "_id" : 2, "name" : "abc", "score" : 15 }]
}
{"_id": "xyz", "items": [
{ "_id" : 6, "name" : "xyz", "score" : 20 },
{ "_id" : 5, "name" : "xyz", "score" : 15 }]
}
我的解决办法是
db.collection.aggregate([
{$sort:{name:-1, score:-1}},
{$group:{_id:"$name",items:{$push:{score:"$score"}}}},
{$project:{items:{$slice:["$items", 2]}}}])
.pretty()
退货
{
"_id" : "abc",
"items" : [
{
"score" : 20
},
{
"score" : 15
}
]
}
{
"_id" : "xyz",
"items" : [
{
"score" : 20
},
{
"score" : 15
}
]
}
我如何在mongoDB中按对每个组进行排序和限制。 考虑以下数据: 现在,我将按国家分组,按评级排序,并将每组的数据限制为2。 所以答案是: 我想只使用聚合框架来实现这一点。 我试图包括排序的评级,但简单的查询后处理没有结果。
我有一个具有以下模式的待售项目集合: 我继承了一个聚合查询,它返回匹配类别的项目,按商家分组,组按组中的最大评级排序: 在此之后,代码继续按评级对每组中的项目进行排序,并删除除每组中排名前2位之外的所有项目。 作为聚合函数的一部分,是否可以在组内执行此排序和限制,以便聚合只返回每组中评级最高的两个项目?
问题内容: 我有一张标签表,想从列表中获得计数最高的标签。 样本数据如下所示 使用 让我得到正在寻找的完美数据。但是,我想对它进行组织,以使最高的标签数排在首位,并限制它仅向我发送前20个左右。 我试过了 而且我不断收到“组功能的无效使用-ErrNr 1111” 我究竟做错了什么? 我正在使用MySQL 4.1.25-Debian 问题答案: 在所有版本的MySQL中,只需在SELECT列表中为聚
问题内容: 我希望能够从电子邮件表中选择一堆行并按发件人分组。我的查询如下所示: 该查询几乎可以按我希望的方式工作-它选择按电子邮件分组的记录。问题在于主题和时间戳记与特定电子邮件地址的最新记录不符。 例如,它可能返回: 当数据库中的记录是: 如果“编程问题”主题是最新的,那么在对电子邮件进行分组时如何使MySQL选择该记录? 问题答案: 一个简单的解决方案是将查询包裹与ORDER语句子选择 第一
此实例中的任务是获取数据库中每个作者的最新文章。 示例查询产生不可用的结果,因为它并不总是返回的最新消息。 目前公认的答案是 编辑:这个问题是另一个问题的延续,我的具体情况略有不同。您可以(也应该)假设还有一个wp_posts.id是该特定帖子的唯一标识符。
我正在尝试使用Elasticsearch(2.4)聚合对使用该查询的多个索引按“productId”分组 1) 我想按分数排序,所以我尝试使用 哪个返回 2) 此外,我正在尝试使用分页,“size”键实际起作用,但“from”键不起作用 **更新-聚合结果示例** 希望有人能帮忙