python - 按日期分组以获取一天、过去 7 天和一个月的点击次数
问题描述
[{'_id': '5ebe39e41e1729d90de',
'modelId': '5ebe3536c289711579',
'lastAt': datetime.datetime(2020, 5, 15, 6, 42, 44, 79000),
'proId': '5ebe3536c2897115793dccfb',
'genId': '5ebe355ac2897115793dcd04'},
{'_id': '5ebe3a0d94fcb800fa474310',
'modelId': '5ebe3536c289711579',
'proId': '5ebe3536c2897115793d',
'genId': '5ebe355ac2897115793',
'lastAt': datetime.datetime(2020, 5, 15, 6, 43, 25, 105000)}]
我想计算一天、过去 7 天和一个月的点击次数。由于模型相同,所以我想要modelId
基于lastAt
.
我尝试了聚合、分组功能。
解决方案
这是纯粹的 Mongo 方法,试试下面的代码:
收藏:
[
{
"_id": "5ebe39e41e1729d90de",
"modelId": "5ebe3536c289711579",
"lastAt": ISODate("2020-05-13T06:42:44.000Z"),
"proId": "5ebe3536c2897115793dccfb",
"genId": "5ebe355ac2897115793dcd04"
},
{
"_id": "5ebe3a0d94fcb800fa474310",
"modelId": "5ebe3536c289711579",
"proId": "5ebe3536c2897115793d",
"genId": "5ebe355ac2897115793",
"lastAt": ISODate("2020-05-15T12:42:25.000Z")
},
{
"_id": "5ebe3a0d94474310",
"modelId": "5ebe3536c289711579",
"proId": "5ebe3536c2897115793d",
"genId": "5ebe355ac2897115793",
"lastAt": ISODate("2020-04-19T06:42:25.000Z")
}
]
询问:
var now = new Date()
var day1 = new Date(now - (1000 * 60 * 60 * 24 * 1))
var day7 = new Date(now - (1000 * 60 * 60 * 24 * 7))
var day30 = new Date(now - (1000 * 60 * 60 * 24 * 30))
db.test7.aggregate([
{
$group: {
_id: null,
day: {
$sum: {
$cond:[{$and: [{$gt: ['$lastAt', day1]},{$lte: ['$lastAt', now]}]}, 1, 0]
}
},
day7: {
$sum: {
$cond:[{$and: [{$gt: ['$lastAt', day7]},{$lte: ['$lastAt', day1]}]}, 1, 0]
}
},
day30: {
$sum: {
$cond:[{$and: [{$gt: ['$lastAt', day30]},{$lte: ['$lastAt', day7]}]}, 1, 0]
}
}
}
},
{
$project: {
_id:0
}
}
])
输出:
{ "day" : 1, "day7" : 1, "day30" : 1 }
注意:您可以轻松转换为 PyMongo 语句,如果遇到困难,请告诉我。
推荐阅读
- javascript - 为使用 React 的网站制作 Chrome 扩展。重新渲染后如何保持更改?
- c# - .NET Core API 文档
- azure - Azure CosmosDb 仅创建分区
- scala - 将 Kibana 中字段的映射从 String 更改为 Double
- javascript - gatsby-source-stripe 开发错误
- ios - OpenTok - iOS 上的骑行相机会降低视频质量
- java - 使用 Java 处理 html 日期输入
- excel - Excel VBA/公式查找包含搜索词的单元格?
- javascript - PayPal 开发人员的逗号问题
- c# - Unity Prefab 当前上下文中不存在名称“mainCamera”