use*_*587 11 mongodb aggregation-framework
我使用mongo聚合函数来查找集合中的重复文档,其中集合如下所示:
{_id, placement_id, placement_name, program_id, target}
Run Code Online (Sandbox Code Playgroud)
我需要找到除_id和placement_id之外具有完全相同字段的所有文档,因此这两个文档是相同的:
{_id:3, placement_id:23, placement_name:"pl1", program_id:5, target:"-"}
{_id:7, placement_id:55, placement_name:"pl1", program_id:5, target:"-"}
Run Code Online (Sandbox Code Playgroud)
我想出的集合函数是:
db.placements.aggregate({$group:{_id:{placement_name:"$placement_name", program_id:"$program_id", target:"$target"}, total:{$sum:1}}},{$match:{total:{$gte:2}}});
Run Code Online (Sandbox Code Playgroud)
然后mongo刚回来:
Error: Printing Stack Trace
at printStackTrace (src/mongo/shell/utils.js:37:15)
at DBCollection.aggregate (src/mongo/shell/collection.js:897:9)
at (shell):1:15
Wed Apr 2 07:43:23.090 aggregate failed: {
"errmsg" : "exception: aggregation result exceeds maximum document size (16MB)",
"code" : 16389,
"ok" : 0
} at src/mongo/shell/collection.js:898
Run Code Online (Sandbox Code Playgroud)
聚合是正确的,我在较小的集合上测试它并且它工作正常,但生产集合有大约80M文档.我想知道在80M文档上尝试find()函数时,它可以工作并要求你输入'it'来获取更多记录.为什么聚合函数没有这个功能呢?我还尝试将limit()附加到聚合函数的末尾,但它也不起作用.有什么工作吗?谢谢.
聚合函数怎么没有这个功能呢?
它确实在2.6中即将推出.
我也尝试将limit()附加到聚合函数的末尾,它也不起作用.任何工作?
$limit聚合框架有一个运算符:http://docs.mongodb.org/manual/reference/operator/aggregation/limit/