当前位置: 首页 > 知识库问答 >
问题:

使用MongoDB Aggregate Framework计算用户活动

牧梓
2023-03-14

我会尽量保持简单。我有用户对象,在我的用户对象中有一个字段,它是一个数组,只包含用户登录日期。我想统计一下在某个特定日期登录的所有现有日期的用户数。

示例用户:

{
  "_id": "some_id",
  "name": "bob",
  "logins": [isodate, isodate, isodate...],

  //...
 }

我想要一个输出,它告诉我:

{
  "date": ISODate,
  "number_of_users_logged_in": 10
}

这可能吗?我该怎么做?

共有1个答案

闾丘冠玉
2023-03-14

你需要使用$展开操作爆炸数组,然后$按日期分组(使用你想要的颗粒度),$只投影日期和计数,如下所示:

db.user.aggregate({
    $unwind: "$logins"
},
{
    $group: {
        _id: {
            year: {
                $year: "$logins"
            },
            month: {
                $month: "$logins"
            },
            day: {
                $dayOfMonth: "$logins"
            },
            hour: {
                $hour: "$logins"
            }
        },
        date: {
            $first: "$logins"
        },
        count: {
            $sum: 1
        }
    }
},
{
    $project: {
        _id : 0,
        date: "$date",
        number_of_users_logged_in: "$count"
    }
})

我按年/月/日/小时分组。

 类似资料:
  • 问题内容: 我想开发一个Java应用程序,它可以检测登录到Window Domain上的用户。这些凭证将用于登录Java应用程序。 我怎样才能做到这一点? 谢谢! 问题答案:

  • 问题内容: 我有一张带有捕获用户登录和注销时间的表(他们登录到的应用程序是与MySQL服务器通信的VB)。该表如下例所示: 因此,每次用户登录时,都会在表中添加一个新行,其中包含用户名和时间戳。用于登录的类型为“ 1”。当他们注销时,只有相同的情况是“ 0”。 存在一些轻微的问题,如果用户强制退出该应用程序,则他们似乎永远都不会注销,因为这显然绕过了提交注销查询(类型“ 0”)的过程。但是请忽略这

  • 我正在为高速公路车队制作一个排名表,我有一个查询,根据车队结果计算所需数据。我正在努力解决的问题是分数差异(得分和对手得分之间的差异)。 所有查询都正常工作,除了 我得到的结果是空的,我猜这很简单,任何帮助都会很好

  • 功能介绍 获取本APP的活跃用户报告数据 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey 请求参数 此处仅列本接口特有参数,公共参数请参考报告级API说明 获取表格数据 参数名 参数类型 是否必须 描述 method string 是 activitydegree/a ; activitydegree/f metric

  • 在 3.1创建用户 中,我们注册了一个用户,并且产生了激活码,这个时候,我们得到激活码,怎么激活用户呢? 其实很简单,看代码 try { // 根据 userid 查询用户 $user = Sentry::findUserById(1); // 使用激活码激活用户 if ($user->attemptActivation('产生的激活码')) {

  • 问题内容: 我需要为包含以下文本的文本文件计算Unigram,BiGrams和Trigrams: “囊性纤维化仅在美国就影响了30,000名儿童和年轻人。吸入盐水雾可以减少填充囊性纤维化患者气道的脓液和感染,尽管副作用包括令人讨厌的咳嗽症状和难闻的味道。这就是结论。发表在本周《新英格兰医学杂志》上的两项研究。 我从Python开始,并使用以下代码: http://www.daniweb.com/s