所以我想统计24小时内有多少IP地址访问我们的数据,我们已经用时间戳存储了IP地址。但是我还没有弄清楚如何在Mongodb中查询IP地址。这样我就可以按IP地址最后一次访问我们服务器的24小时对它们进行分组。
例如:
假设IP地址1.1.1.1
访问我们的站点01-01-2022T00:00
,但也访问了它02-01-2022T01:00
这将是2个文档,但我们需要排除第二个文档,因为它在24小时内。
但是,如果有人在周三晚上11:30访问,然后在周四凌晨1点访问,也应该是这样。
示例文档
/**
* Paste one or more documents here
* /
{
"ipaddress": "1.1.1.1",
"accessDate": {
"$date": {
"$numberLong": "1666931400000"
}
},
"accessFileId":{
"$oid": "6274a3a881cf417136a8a4ed"
}
}
我试着在我们的真实的生活数据中使用下面的答案,它并没有正确地将它们分组。
[{
$setWindowFields: {
partitionBy: '$UUID',
sortBy: {
timestamp: 1
},
output: {
accessCount: {
$count: {},
window: {
range: [
-12,
12
],
unit: 'hour'
}
}
}
}
}, {
$project: {
UUID: 1,
location:1,
timestamp: 1
}
}, {
$group: {
_id: {
id: '$accessCount'
}
}
}]
1条答案
按热度按时间9udxz4iz1#
尝试$setWindowFields运算符。将像下面这样。
对于我使用的-/+ 12小时的间隔,您可以根据您的需要进行定制,目前还不清楚24小时间隔可能在哪个确切时间开始。