Python中datetime.datetime对象的正确None或null条目是什么?

Mit*_*ops 4 python datetime date-math mongodb nonetype

我正在使用pymongo将一些日期加载到mongodb中.因为pymongo自动转换为BSON,我正在使用datetime的datetime.strptime函数将输入字符串如"12/04/2013"​​转换为Date对象,如下所示:

>>> datetime.datetime.strptime("12/04/2013",'%m/%d/%Y')
datetime.datetime(2013, 12, 4, 0, 0)
Run Code Online (Sandbox Code Playgroud)

这样它们就可以使用标准的mongo查询进行搜索.

我的问题是:我还想表示我不知道什么日期的东西是等价的None,所以我可以None对它进行空值测试.我知道我可以把这个日期放在过去或未来的一个try-catch块进入''或者很远None,但这是hacky思考,我宁愿用一个合适的None-type来表示实际上是什么.

如何输入无日期时间?

zer*_*323 7

当您搜索MongoDB时null,缺少的值是等效的.

> db.foo.insert({a: null})
> db.foo.insert({})
db.foo.find({a: null}, {_id: 0})
{ "a" : null }
{  }
Run Code Online (Sandbox Code Playgroud)

它的工作方式与pymongo以下方式相同:

>>> [doc for doc in pymongo.MongoClient().test.foo.find({'a': None}, {'_id': 0})]
[{u'a': None}, {}]
Run Code Online (Sandbox Code Playgroud)

所以None似乎是个不错的选择.它与Python语义一致,它使用dict.get方法的默认行为很好,并且在使用Python驱动程序时直观地映射到MongoDB类型.