在pymongo查询问题

时间:2017-05-21 17:17:29

标签: python mongodb datetime pymongo

我遇到一些问题,通过python查找具有今天日期功能的文档。

我使用以下功能:

datetime.datetime.now().date().strftime('%Y-%m-%d') 

,它给出以下值:2017-05-21

但是,我的文档(mongo)中的值在其周围附加了双字符串,如下所示:"2017-05-21"

因此,在我的pymongo查询中完全填写上面的字符串(" 2017-05-21")就像魅力一样。但是,我需要datetime函数的动态性,但遗憾的是,它与我查询所需的双引号日期字符串不匹配。

有没有人知道任何解决方法?我已经尝试过替换功能等。它要么在单引号内创建双引号,要么不做任何事情。

1 个答案:

答案 0 :(得分:0)

听起来您的MongoDB文档插入不正确,使用日期字段的文本而不是BSON日期时间。

PyMongo会自动在Python日期时间和BSON日期时间之间进行转换,因此您可以插入包含BSON日期时间的文档,如下所示:

dt = datetime.datetime.utcnow()
collection.insert_one({'myDate': dt})

证明日期比较现在如此:

# There is a document with myDate in the past, now.
print(collection.find_one({'myDate': {'$lt': datetime.datetime.utcnow()}}))
# No document with myDate in the future.
print(collection.find_one({'myDate': {'$gt': datetime.datetime.utcnow()}}))