我的问题是:
型号:
{应用程序:"abc",日期: Time.now,状态:"1“user_id: id1,id2,id4 } {应用程序:"abc",日期: Time.yesterday,状态:"1",user_id: id1,id3,id5 } {应用程序:"abc",日期:时间.昨天-1,状态:"1",user_id: id1,id3,id5 }
我需要在一段时间内计算user_ids的唯一数量。
预期结果:
{应用程序:"abc",状态:"1",unique_id_count: 5}
我目前正在使用聚合框架,并计算mongodb之外的I。
{ $match:{ application:"abc“},{ $unwind:"$users”},{ $group:{ _id:{_id:{_id:"$status"},用户:{ $addToSet:"$users“}}
我的用户ids数组非常大,所以我必须迭代日期,否则我将得到最大的文档限制(16 My )。
我也可以通过$group
{年份:{ $year:"$date“},月份:{ $month:"$date”},日:{ $dayOfMonth:"$date“}
但我也有文档大小的限制。
是否可以计算mongodb中的设置大小?
谢谢
发布于 2013-01-28 19:16:30
下面将返回每个应用程序的uniqueUsers号。这将使用mongodb的管道特性将组操作应用于组操作的结果。
{ $match: { application: "abc" } },
{ $unwind: "$users" },
{ $group: { _id: "$status", users: { $addToSet: "$users" } } },
{ $unwind:"$users" },
{ $group : {_id : "$_id", count : {$sum : 1} } }
希望在下面的mongo版本中,通过命令可以更轻松地完成这一任务,该命令给出了投影下数组的大小。{$project: {id: "$_id", count: {$size: "$uniqueUsers"}}}
https://jira.mongodb.org/browse/SERVER-4899
干杯
发布于 2013-01-28 20:38:32
抱歉,我来晚了点。简单地在'user_id‘上分组并用一个简单的组来计算结果就可以了,而且不会遇到文档大小的限制。
[
{$match: {application: 'abc', date: {$gte: startDate, $lte: endDate}}},
{$unwind: '$user_id'},
{$group: {_id: '$user_id'}},
{$group: {_id: 'singleton', count: {$sum: 1}}}
];
发布于 2019-04-24 09:44:48
使用$size获取集合的大小。
[
{
$match: {"application": "abc"}
},
{
$unwind: "$user_id"
},
{
$group: {
"_id": "$status",
"application": "$application",
"unique_user_id": {$addToSet: "$user_id"}
}
},
{
$project:{
"_id": "$_id",
"application": "$application",
"count": {$size: "$unique_user_id"}
}
}
]
https://stackoverflow.com/questions/14568283
复制相似问题