通过Unix时间戳范围查询Mongodb

时间:2019-01-23 05:12:06

标签: python mongodb pymongo

我正在尝试通过ajax调用在Python中执行自定义查询。

前端以unix时间发送开始时间和结束时间数据,例如1548417600000。 然后,我在Python中转换为(ISO时间(我认为吗?),因为MongoDB更喜欢afaik。

文档示例:

{
    "_id" : ObjectId("5c125a185dea1b0252c5352"),
    "time" : ISODate("2018-12-13T15:09:42.536Z"),
}

尽管知道应该有成千上万个结果,PyMonogo却不返回任何内容。

@login_required(login_url='/login')
def querytimerange(request):
    print("Expecto Patronum!!")
    if request.method == 'POST':
        querydata = lambda x: request.POST.get(x)
        colname = querydata('colname')
        startdate = querydata('start')
        enddate = querydata('end')
        startint = int(startdate)
        endint = int(enddate)
        dtstart = datetime.utcfromtimestamp(startint/1000.0)
        iso_start = str(dtstart.isoformat())
        print(iso_start)
        dtend = datetime.utcfromtimestamp(endint/1000.0)
        iso_end = str(dtend.isoformat())
        print(iso_end)
        collection = db[colname]

        data = collection.find({"time": {"$gt": iso_start,"$lt": iso_end}})

        for a in data:
            print(a)

        return JsonResponse({"ok": "ok"})

    else:

        return JsonResponse({"ok": "no"})

是的,我想我正在努力使日期格式正确。 从Unix时间转换后,日期在这样的str中:

2019-01-20T04:00:002019-01-25T12:00:00

不确定这是否正确,但是应该通过isoformat afaik吗?

主要目标是在聚合管道中使用它。

        {
            "$match": {
                "time":{
                    "date": {
                        "$gt":startdate,
                        "$lt":enddate
                    }
                }
            }
        },

我正在Django应用上使用PyMongo驱动程序。

谢谢!

0 个答案:

没有答案