使用日期过滤器从Mongo进行数据过滤

时间:2019-09-03 12:00:29

标签: python-3.x mongodb

我正在尝试使用python代码从mongo过滤数据,并且mongo中可用的日期格式完全不同,因此导致零记录。我正在尝试转换日期格式,但仍然无法正常工作。

日期字段中的值之一:

2018-06-28 21:27:31.132Z

我已经连接到数据库,并且使用下面的代码返回了零条记录,即使数据库中有1000条以上的记录也是如此。

我尝试过以下格式

import datetime
date_time_str_st = '2018-03-07 23:22:29'
date_time_obj_st = datetime.datetime.strptime(date_time_str_st, '%Y-%m-%d %H:%M:%S')

date_time_str_en = '2018-03-08 00:07:44'
date_time_obj_en = datetime.datetime.strptime(date_time_str_en, '%Y-%m-%d %H:%M:%S')


foramtdt1 = date_time_obj_st.strftime("%Y-%m-%d %H:%M:%S.%fZ")
foramtdt2 = date_time_obj_en.strftime("%Y-%m-%d %H:%M:%S.%fZ")
pipeline = [{'$match':{'$and':[{'date':{'$gte': {'$date': '2018-03-07 23:22:29.683Z' }}},{'date':{'$lt': {'$date': '2018-03-08 00:07:44.629Z' }}}]}}]
Read_data = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri",connectionstring).option("pipeline",pipeline).load()

display(Read_data)

也尝试使用直接过滤器

pipeline = [{'$match':{'$and':[{'date':{'$gte': '2018-03-07 23:22:29.683Z'}},{'date':{'$lt': '2018-03-08 00:07:44.629Z' }}]}}]
Readdata = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri",connectionstring).option("pipeline",pipeline).load()
display(Readdata)

0条记录正在过滤。我相信我没有正确转换所需的时间戳格式。有人可以帮我吗?

0 个答案:

没有答案