我正在努力为我的MongoDB数据库创建聚合查询。
数据库非常大(+10 of ),因此即使在短时间窗口(数万个文档)中手动聚合也非常慢。
文档示例始终遵循此结构:
{
"_id":ObjectId("568285c5693a7336bb16c817"),
"DetectTime":"2015-12-29T13:08:21Z",
"Node":[
{
"Type":["Flow","Statistical"],
"SW":["Nemea","HostStatsNemea"],
"Name":"cz.cesnet.nemea.hoststats"
}
],
"EventTime":"2015-12-29T13:07:05Z",
"Description":"Horizontal port scan",
"ConnCount":254,
"CeaseTime":"2015-12-29T13:07:46Z",
"Format":"IDEA0",
"Category":["Recon.Scanning"],
"ID":"924c76d4-7c4d-45d8-b1b1-3dc36cf47729",
"Source":[
{
"IP4":["192.168.0.254"],
"Proto":["tcp"]
}
],
"FlowCount":254,
"CreateTime":"2015-12-29T13:08:21Z"
}对我来说重要的是我想要聚合的Category和DetectTime。使用DetectTime,我希望为每个Category实现按N分钟的聚合,并对每个聚合的FlowCount求和。我真的很难处理它,因为DetectTime不是日期而是字符串,因此我无法正确地使用它。
我真的被困住了,任何帮助都是非常感谢的!
发布于 2016-02-01 21:13:01
你的问题是DetectTime是string而不是datetime对象。我非常确定您一定是在逻辑中的某个地方对datetime进行比较。为了进行比较,您需要通过执行以下操作将string转换为datetime对象
from datetime import datetime as dt
detectTime = dt.strptime("2015-12-29T13:08:21Z", "%Y-%m-%dT%H:%M:%SZ")您可以对所有条目执行此操作一次,并将其存储在MongoDB中。
https://stackoverflow.com/questions/35131263
复制相似问题