我有一个大约400GB的MongoDB数据库,文件包含各种字段,但关键是一个ID数组。
因此,一个JSON文件可能看起来像这样:
因此,一个JSON文件可能看起来像这样:
{
"name":"bob"
"dob":"1/1/2011"
"key":
[
"1020123123",
"1234123222",
"5021297723"
]
}
这里的关键变量是“key”。总共有大约100亿个键在5000万个文档中(因此每个文档大约有200个键)。键可以重复,而独特的键约有1500万个。
我想做的是返回出现最频繁的10,000个键。我认为聚合操作可能能够实现这一点,但我很难让它运行起来。以下是我的代码:
db.users.aggregate(
[
{ $unwind : "$key" },
{ $group : { _id : "$key", number : { $sum : 1 } } },
{ $sort : { number : -1 } },
{ $limit : 10000 }
]
);
有什么想法我做错了什么吗?