如何在MongoDB中存储和检索日期为dd / mm / yyyy?

时间:2015-12-22 06:29:55

标签: python mongodb date datetime

我使用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的初学者。请指导我!

1 个答案:

答案 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'>
>>>