首页 > 解决方案 > 使用 pymongo 查找收集中的先前数据和新数据之间的时间差

问题描述

我有使用 pymongo 插入到 mongodb 中的字典数据列表

    data =[{
        "cam_name" : "cam1",
        "stats" : [
                {
                        "total" : 10,
                        "red" : 5,
                        "yellow" : 0,
                        "green" : 5,
                        "time_stamp" : datetime(2020,6,20,17,52,4,992000),
                        "image_path" : "image/19-06-2020/cam1/19-06-2020_17-52-16.jpg"
                },
                {
                        "total" : 10,
                        "red" : 5,
                        "yellow" : 0,
                        "green" : 5,
                        "time_stamp" : datetime(2020,6,20,17,52,27,992000),
                        "image_path" : "image/19-06-2020/cam1/19-06-2020_17-52-25.jpg"
                },
                {
                        "total" : 10,
                        "red" : 5,
                        "yellow" : 0,
                        "green" : 5,
                        "time_stamp" : datetime(2020,6,20,17,52,1,992000),
                        "image_path" : "image/19-06-2020/cam1/19-06-2020_17-52-25.jpg"
                }]
},

    {
        "cam_name": "cam2",
        "stats": [
            {
                "total": 10,
                "red": 5,
                "yellow": 0,
                "green": 5,
                "time_stamp": datetime(2020, 6, 20, 17, 52, 6, 992000),
                "image_path": "image/19-06-2020/cam1/19-06-2020_17-52-16.jpg"
            },
            {
                "total": 10,
                "red": 5,
                "yellow": 0,
                "green": 5,
                "time_stamp": datetime(2020, 6, 20, 17, 52, 59, 992000),
                "image_path": "image/19-06-2020/cam1/19-06-2020_17-52-25.jpg"
            },
            {
                "total": 10,
                "red": 5,
                "yellow": 0,
                "green": 5,
                "time_stamp": datetime(2020,6, 20, 17, 52, 4, 992000),
                "image_path": "image/19-06-2020/cam1/19-06-2020_17-52-25.jpg"
            }]
    }

]

输入数据后,我试图找出可用于键 ['stats']['time_stamp'] 的字典列表中每个元素之间的时间差

但是我无法通过使用查找列表中可用元素之间差异的方法来找出答案

from pymongo import MongoClient
from datetime import datetime
import json
import pandas as pd
from datetime import timedelta

myclient = MongoClient('localhost', 27017)

master_data = myclient['data_set']
cam_db = master_data['cam_table']

prev = None
for i,c in enumerate(data):
for k in c['stats']:
    #print(k['time_stamp'])
    if prev==None:
        prev = k['time_stamp']
        #print(prev)
    else:
        prev = k['time_stamp'] - prev
        print(prev)

输出:

0:00:23
2020-06-20 17:52:08.992000
-1 day, 23:59:56
2020-06-20 17:52:31.992000
0:00:00

之后,我无法找到完美的方法来找出时差

注意:我想检查每个可用数据之间的时间差是否小于 20 秒
建议真的很有帮助

标签: pythonpython-3.xmongodblist-comprehensionpymongo

解决方案


推荐阅读