我使用pandas将txt文件转换为csv,转换后的CSV的几列进入MongoDB,最少有几千行。
其中一个字段是dd.mm.yyyy格式的日期。我希望它以任何方式存储在MongoDB中,以便我能够根据日期(小于/大于日期)进行查询,并以与dd.mm.yyyy相同的格式检索记录(Mongo文档)到python代码。
db.mydata.insert({
name: 'Bob',
birth: '12.03.1995',
language: [ 'English', 'French', 'Mandrin']
})
我是python和MongoDB的初学者。请指导我!
答案 0 :(得分:2)
MongoDB使用BSON存储数据,pymongo会在保存到mongoDB时自动将你的python datetime对象传输到BSON,然后你可以使用filter来查询mongoDB。
请注意,文档可以包含本机Python类型(例如 datetime.datetime实例)将自动转换为 并从适当的BSON类型。
所以,你需要的只是来回转换日期时间类型和字符串类型。
使用这两个功能,您可以在官方python手册上查看:
8.1.7. strftime() and strptime() Behavior
该文件解释了您应该使用哪种参数/格式。
一些例子可以帮助你改进它,假设你使用的是python 2.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'>
>>>