我已经回顾了几个与上述主题相关的答案和示例(包括SO),但找不到用于回答我的要求的工作示例:
我有一系列包含多个维度(描述性属性)和指标的文档。我希望计算特定键值在某组其他键中的出现次数(唯一)。即有多少玩家来自一个国家并说一种语言。
文件结构:
{
"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的解决方案。
非常感谢。
答案 0 :(得分:9)
尝试:
db.YOUR_COLLECTION.aggregate([
{
$group: {
_id: {
Country: "$Country",
Language: "$Language"
},
PlayerCount: {$sum: 1}
}
}
]);
国家/地区和语言将位于“_id”字段内。