我有一个约400gb的mongodb.这些文档包含各种字段,但这里的关键是一系列ID.
所以json文件可能看起来像这样
{
"name":"bob"
"dob":"1/1/2011"
"key":
[
"1020123123",
"1234123222",
"5021297723"
]
}
Run Code Online (Sandbox Code Playgroud)
这里的焦点变量是"关键".在5000万个文档中总共有大约100亿个密钥(因此每个文档大约有200个密钥).键可以重复,大约有1500万个UNIQUE键.
我想要做的是返回10,000个最常用的键.我认为聚合可能会这样做,但我在运行它时遇到了很多麻烦.这是我的代码:
db.users.aggregate(
[
{ $unwind : "$key" },
{ $group : { _id : "$key", number : { $sum : 1 } } },
{ $sort : { number : -1 } },
{ $limit : 10000 }
]
);
Run Code Online (Sandbox Code Playgroud)
我有什么想法我做错了吗?
Wiz*_*ard 44
试试这个:
db.users.aggregate(
[
{ $unwind : "$key" },
{ $group : { _id : "$key", number : { $sum : 1 } } },
{ $sort : { number : -1 } },
{ $limit : 10000 },
{ $out:"result"},
], {
allowDiskUse:true,
cursor:{}
}
);
Run Code Online (Sandbox Code Playgroud)
然后找到结果db.result.find().
| 归档时间: |
|
| 查看次数: |
19157 次 |
| 最近记录: |