Python 如何在MongoDB中以dd/mm/yyyy的形式存储和检索日期?
我正在使用pandas将txt文件转换为csv,转换后的csv中只有很少的列进入MongoDB,最少有1000行 其中一个字段是dd.mm.yyyy格式的日期。我希望它以任何方式存储在MongoDB中,以便能够基于日期(小于/大于日期)进行查询,并以与dd.mm.yyyy相同的格式检索记录(Mongo文档)到python代码Python 如何在MongoDB中以dd/mm/yyyy的形式存储和检索日期?,python,mongodb,date,datetime,Python,Mongodb,Date,Datetime,我正在使用pandas将txt文件转换为csv,转换后的csv中只有很少的列进入MongoDB,最少有1000行 其中一个字段是dd.mm.yyyy格式的日期。我希望它以任何方式存储在MongoDB中,以便能够基于日期(小于/大于日期)进行查询,并以与dd.mm.yyyy相同的格式检索记录(Mongo文档)到python代码 db.mydata.insert({ name: 'Bob', birth: '12.03.1995', language: [ 'E
db.mydata.insert({
name: 'Bob',
birth: '12.03.1995',
language: [ 'English', 'French', 'Mandrin']
})
我是python和MongoDB的初学者。请引导我 MongoDB使用BSON存储数据,pymongo在保存到MongoDB时会自动将python datetime对象传输到BSON,然后您可以使用过滤器查询MongoDB 请注意,文档可以包含本机Python类型(如 datetime.datetime实例),将自动转换为 和相应的BSON类型 所以,您只需要在datetime类型和string类型之间来回转换 使用这两个函数,您可以在官方python手册中查看: 该文档说明了应使用的参数/格式 假设您使用的是Python2.7,一些示例将帮助您改进:
>>> original_date_string = '22.12.2015'
>>> print type(original_date_string)
# Your original data is a string
<type 'str'>
>>> import datetime
>>> python_date_object_for_insert_mongo = datetime.datetime.strptime(original_date_string, '%d.%m.%Y')
>>> print python_date_object_for_insert_mongo
# transfer to datetime object use datetime.datetime.strptime()
# the second argument is the format of your original data
2015-12-22 00:00:00
>>> print type(python_date_object_for_insert_mongo)
# see, it's a native python datetime object
<type 'datetime.datetime'>
# when you retrived data from mongo db, it will give you native datime object, too:
>>> python_date_object_retrive_from_mongo = python_date_object_for_insert_mongo
# so we use strftime to transfer back from datetime to string
>>> transfer_to_original_format = datetime.datetime.strftime(python_date_object_retrive_from_mongo, '%d.%m.%Y')
# check it out
>>> print transfer_to_original_format
22.12.2015
>>> print type(transfer_to_original_format)
<type 'str'>
>>>
原始日期字符串='22.12.2015'
>>>打印类型(原始日期字符串)
#原始数据是一个字符串
>>>导入日期时间
>>>python_date_object_for_insert_mongo=datetime.datetime.strtime(原始日期字符串,'%d.%m.%Y'))
>>>打印python\u日期\u对象\u以插入\u mongo
#使用datetime.datetime.strptime()传输到datetime对象
#第二个参数是原始数据的格式
2015-12-22 00:00:00
>>>打印类型(python\u日期\u对象\u用于插入\u mongo)
#看,这是一个本机python datetime对象
#当您从mongo db检索数据时,它也将为您提供本机datime对象:
>>>python\u date\u object\u retrieve\u from\u mongo=python\u date\u object\u for\u insert\u mongo
#因此,我们使用strftime将datetime转换回字符串
>>>转换为原始格式=datetime.datetime.strftime(python\u date\u object\u retrive\u from\u mongo,“%d.%m.%Y”)
#看看
>>>打印传送到原始格式
22.12.2015
>>>打印类型(转换为原始格式)
>>>
我刚刚意识到我们可以在Mongo中存储Python本机类型。非常感谢你这么好的解释。