【发布时间】:2020-08-05 04:03:03
【问题描述】:
我收集的数据: 任何名称都有样本价值:
{
"name" : "kamal",
"val" : 5
}
{
"name" : "ali",
"val" : 3
}
{
"name" : "mohammad",
"val" : 12
}
{
"name" : "kamal",
"val" : 6
}
{
"name" : "kamal",
"val" : 10
}
{
"name" : "ali",
"val" : 11
}
{
"name" : "mohammad",
"val" : 9
}
{
"name" : "mohammad",
"val" : 19
}
{
"name" : "ali",
"val" : 6
}
我的收藏中有 20000000 个文档。 这一天增长了1000000 请帮我解决这个问题。 这个管道在 mongodb 工作:
db.test.aggregate([
{$group:{
_id:$name,
vals:{$push:$val}
}
}
])
为任何名称添加所有 val,但在大数据内存限制中不起作用。 我需要这个: 我需要在组中限制推送数据数。
db.test.aggregate([
{$group:{
_id:$name,
vals:{$push:$val , $limit:500000}
}
}
])
【问题讨论】:
-
在
$group之前的$limit 阶段可以满足您的需要吗? -
这个集合中有多少个不同的
name?db.test.distinct("name")?如果结果很小,我们可以定义$facet阶段并手动限制每个管道.. -
这限制了所有文件,但我需要对每个名称应用限制
-
一千左右
标签: mongodb bigdata aggregate push limit