use*_*059 12 mongodb aggregation-framework
这是我的问题:
模型:
{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中的设置大小?
谢谢
cub*_*buk 23
以下内容将返回每个应用程序的uniqueUsers数.这将通过使用mongodb的管道功能将组操作应用于组操作的结果.
{ $match: { application: "abc" } },
{ $unwind: "$users" },
{ $group: { _id: "$status", users: { $addToSet: "$users" } } },
{ $unwind:"$users" },
{ $group : {_id : "$_id", count : {$sum : 1} } }
Run Code Online (Sandbox Code Playgroud)
希望这将通过一个命令以更简单的方式在mongo的以下版本中完成,该命令在投影下给出数组的大小.{$project: {id: "$_id", count: {$size: "$uniqueUsers"}}}
https://jira.mongodb.org/browse/SERVER-4899
干杯