我遇到一些问题,通过python查找具有今天日期功能的文档。
我使用以下功能:
datetime.datetime.now().date().strftime('%Y-%m-%d')
,它给出以下值:2017-05-21
但是,我的文档(mongo)中的值在其周围附加了双字符串,如下所示:"2017-05-21"
因此,在我的pymongo查询中完全填写上面的字符串(" 2017-05-21")就像魅力一样。但是,我需要datetime函数的动态性,但遗憾的是,它与我查询所需的双引号日期字符串不匹配。
有没有人知道任何解决方法?我已经尝试过替换功能等。它要么在单引号内创建双引号,要么不做任何事情。
答案 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()}}))