首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB按时间窗口聚合

MongoDB按时间窗口聚合
EN

Stack Overflow用户
提问于 2016-02-01 21:03:08
回答 1查看 346关注 0票数 0

我正在努力为我的MongoDB数据库创建聚合查询。

数据库非常大(+10 of ),因此即使在短时间窗口(数万个文档)中手动聚合也非常慢。

文档示例始终遵循此结构:

代码语言:javascript
复制
{
  "_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"
}

对我来说重要的是我想要聚合的CategoryDetectTime。使用DetectTime,我希望为每个Category实现按N分钟的聚合,并对每个聚合的FlowCount求和。我真的很难处理它,因为DetectTime不是日期而是字符串,因此我无法正确地使用它。

我真的被困住了,任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

发布于 2016-02-01 21:13:01

你的问题是DetectTimestring而不是datetime对象。我非常确定您一定是在逻辑中的某个地方对datetime进行比较。为了进行比较,您需要通过执行以下操作将string转换为datetime对象

代码语言:javascript
复制
from datetime import datetime as dt
detectTime = dt.strptime("2015-12-29T13:08:21Z", "%Y-%m-%dT%H:%M:%SZ")

您可以对所有条目执行此操作一次,并将其存储在MongoDB中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35131263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档