选择日期范围在mongo中无法正常工作

时间:2016-04-14 17:20:50

标签: mongodb date pymongo

我希望使用查询选择一系列日期,但看起来我有时区格式的日期,但是我认为它们被包装为日期对象,以便我可以在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

0 个答案:

没有答案