2

我有一个关于当前工作项目的 mongo 问题需要你的帮助。

以下是我的问题:

我已将我的用户日志数据存储为示例:

db.visitors 集合

 [
    {
        uid: "0001",
        logPath: "/home",
        logTime: "Mon Dec 27 2010 18:51:22 GMT+0000 (UTC)"
    },
    {
        uid: "0002",
        logPath: "/",
        logTime: "Mon Dec 27 2010 18:51:22 GMT+0000 (UTC)"
    },
    {
        uid: "0001",
        logPath: "/product",
        logTime: "Mon Dec 27 2010 18:51:23 GMT+0000 (UTC)"
    },
    {
        uid: "0001",
        logPath: "/order",
        logTime: "Mon Dec 28 2010 18:51:23 GMT+0000 (UTC)"
    }
]

我需要按日期对访问用户进行分组(2010 年 12 月 28 日星期一到 2010 年 12 月 27 日星期一)

尝试查找 uid 为 0001 和组的用户的日志:

[
    {
        date: "Mon Dec 28",
        log: [
            {
                logPath: '/order'
            }
        ]
    },
    {
        date: "Mon Dec 27",
        log: [
            {
                logPath: '/home'
            },
            {
                logPath: '/product'
            }
        ]
    }
]

请指导我如何分组

4

1 回答 1

1
db.aggregate([
    {$match: {uid: "0001", logTime: {$gte: ISODate('Mon Dec 27 2010'), $lt: ISODate("Mon Dec 29 2010")}}},
    {$project: 
        {day: {'$dayOfMonth': '$logTime'},month: {'$month':'$logTime'},year: {'$year':'$logTime'} }
    },
    {$group: {
        _id: {day:'$day',month:'$month',year:'$year'},
        log: {$push:{logPath:'$logPath'}}
    }}
])

像这样的东西应该可以解决问题。如果您只想按月份分组,那么您可以day_id.$group

还有另一种约会方式,但我必须承认这种方式可能是目前最简单的方式。

于 2013-07-02T10:25:28.373 回答