这是我的问题:
模型:
{application:“abc”,date:Time.now,status:“1”user_id:[id1,id2,id4]} {application:“abc”,date:Time.yesterday,status:“1”,user_id: [id1,id3,id5]} {application:“abc”,date:Time.yesterday-1,status:“1”,user_id:[id1,id3,id5]}
我需要在一段时间内计算user_id的唯一数量 .
预期结果:
{application:“abc”,status:“1”,unique_id_count:5}
我目前正在使用聚合框架并计算mongodb之外的ID .
{$ match:{application:“abc”}},{$ unwind:“$ users”},{$ group:{_ id:{status:“$ status”},users:{$ addToSet:“$ users” }}}
我的用户ID数组非常大,所以我必须迭代日期或者我将获得最大文档限制(16mb) .
我也可以分组
{year:{$ year:“$ date”},month:{$ month:“$ date”},day:{$ dayOfMonth:“$ date”}
但我也得到了文件大小限制 .
是否可以计算mongodb中的设置大小?
谢谢
2 回答
以下内容将返回每个应用程序的uniqueUsers数 . 这将通过使用mongodb的管道功能将组操作应用于组操作的结果 .
希望这将通过一个命令以更简单的方式在mongo的以下版本中完成,该命令在投影下给出数组的大小 .
{$project: {id: "$_id", count: {$size: "$uniqueUsers"}}}
https://jira.mongodb.org/browse/SERVER-4899干杯
对不起,我有点迟到了 . 只需对'user_id'进行分组并使用一个简单的组计算结果就可以了,并且不会遇到doc size限制 .