gpt4 book ai didi

mongodb - 在 mongodb 集合中按日期分组

转载 作者:可可西里 更新时间:2023-11-01 10:44:18 25 4
gpt4 key购买 nike

我有一个关于当前工作项目的 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'
}
]
}
]

请指导我如何分组

最佳答案

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'}}
}}
])

类似的东西应该可以解决问题。如果您只想按月分组,那么您可以从 $group_id 中取出 day 字段。

还有另一种处理日期的方法,但我必须承认这种方法目前可能是最简单的。

关于mongodb - 在 mongodb 集合中按日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com