Mongodb 具有不同密钥计数的mongo聚合框架
我已经回顾了与上述主题相关的几个答案和示例(包括其他),但找不到一个可用于回答我的要求的工作示例: 我有一个包含多个维度(描述性属性)和度量的文档集合。我希望计算某个键值在某组其他键中的外观(唯一)数量。i、 e.有多少运动员来自一个国家并说某种语言 文件结构:Mongodb 具有不同密钥计数的mongo聚合框架,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我已经回顾了与上述主题相关的几个答案和示例(包括其他),但找不到一个可用于回答我的要求的工作示例: 我有一个包含多个维度(描述性属性)和度量的文档集合。我希望计算某个键值在某组其他键中的外观(唯一)数量。i、 e.有多少运动员来自一个国家并说某种语言 文件结构: { "date": "2013-06-13T00:00:00.000Z" "Operating System": "Windows 7", "Browser": "Chrome", "Device": "Desktop/
{
"date": "2013-06-13T00:00:00.000Z"
"Operating System": "Windows 7",
"Browser": "Chrome",
"Device": "Desktop/Laptop",
"Country": "Afghanistan",
"Language": "English",
"Player": "91823781188577408" //This is a string value, the player id
},
...
要求的结果:
{
"Country": "Afghanistan",
"Language": "English",
"PlayerCount": 120
}
在SQL中,这可能类似于:
SELECT Country, Language, COUNT(DISTINCT PlayerCount) FROM Table
GROUP BY Country, Language
我最近对聚合的尝试涉及到几种类型的$project、$group和$unwind,不幸的是,它们都不起作用,添加它们也没有多大价值。请注意,我想要的是基于聚合框架的解决方案,而不是map reduce
非常感谢。试试:
db.YOUR_COLLECTION.aggregate([
{
$group: {
_id: {
Country: "$Country",
Language: "$Language"
},
PlayerCount: {$sum: 1}
}
}
]);
国家和语言将在“_id”字段中。Hi@MustafaGenç,我正在使用上述技术,但是我希望实现一个小的更改,如果上面的问题有
COUNT(Distinct Player)
,我如何更改您的答案以获得每组玩家的数量?然后,使用普通的Distinct查询。不需要骨料。感谢@MustafaGenç,这就是我最后所做的,只是出于好奇,这是可以用agg框架做到的吗?如果你运行上面的聚合查询,聚合输出结果的大小将给你计数。如果我想得到不同玩家的计数,这是行不通的。如果文档中有同一国家
和语言
的多个玩家ID,则只需给出玩家ID的计数即可。如何获得distinct玩家的计数
?我想sql应该是选择国家、语言、count(distinct Player)作为玩家计数,从表组中按国家、语言进行计数