首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongodb聚合计数数组/设置大小

Mongodb聚合计数数组/设置大小
EN

Stack Overflow用户
提问于 2013-01-28 18:05:21
回答 3查看 29.3K关注 0票数 12

我的问题是:

型号:

{应用程序:"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中的设置大小?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-28 19:16:30

下面将返回每个应用程序的uniqueUsers号。这将使用mongodb的管道特性将组操作应用于组操作的结果。

代码语言:javascript
运行
复制
{ $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

干杯

票数 25
EN

Stack Overflow用户

发布于 2013-01-28 20:38:32

抱歉,我来晚了点。简单地在'user_id‘上分组并用一个简单的组来计算结果就可以了,而且不会遇到文档大小的限制。

代码语言:javascript
运行
复制
[
    {$match: {application: 'abc', date: {$gte: startDate, $lte: endDate}}},
    {$unwind: '$user_id'},
    {$group: {_id: '$user_id'}},
    {$group: {_id: 'singleton', count: {$sum: 1}}}
];
票数 2
EN

Stack Overflow用户

发布于 2019-04-24 09:44:48

使用$size获取集合的大小。

代码语言:javascript
运行
复制
[
    {
        $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"}
        }
    }
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14568283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档