我希望使用查询选择一系列日期,但看起来我有时区格式的日期,但是我认为它们被包装为日期对象,以便我可以在python / pymongo中使用日期对象。但是当我使用查询时,我得不到我期望的结果。我还尝试将日期转换为ISODate。所以我的问题是,我应该:
a)以不同的格式重新加载所有日期数据。 b)按照原样处理mongo中的日期。
下面我将多个选项串联起来,因此或者,但是对于我的例子:
query = {}
query["$or"] = []
query["$or"].append({"date_object": {"$lte": time_to.isoformat(), "$gte": time_from.isoformat() } })
,并提供:
query = {'platform': {'$in': [re.compile('windows', re.IGNORECASE)]}, '$or': [{'date_object': {'$gte': '2016-04-14T18:02:02.862030', '$lte': '2016-04-28T18:02:02.862030'}}]}
此外,如果我尝试以下(使用datetime对象),我会遇到同样的问题。
query = {}
query["$or"] = []
query["$or"].append({"date_object": {"$lte": time_to, "$gte": time_from } })
query = {'platform': {'$in': [re.compile('windows', re.IGNORECASE)]}, '$or': [{'date_object': {'$gte': datetime.datetime(2016, 4, 15, 7, 14, 7, 269376), '$lte': datetime.datetime(2016, 4, 29, 7, 14, 7, 269376)}}]}
例如,文件是这样的。
{
"_id": 889,
"date_object": [
{
"$date": "2014-01-27T00:00:00.000Z"
},
{
"$date": "2015-04-20T00:00:00.000Z"
},
{
"$date": "2016-05-09T00:00:00.000Z"
}
]
}
即使日期不在原始查询中指定的范围内,也会返回_id==889
。