pymongo排序返回记录没有排序键

时间:2015-02-19 02:44:02

标签: python mongodb sorting pymongo

我正在对其日期列中的集合进行排序,以查找该集合中的最小日期。但是,它会返回缺少日期键的记录。以下是片段。这是一个错误吗?

date_records = usercollection.find({'customer_id':'abc'}).sort('join_date',1).limit(1)
for record in date_records:
    print record # prints a record that doesn't have the join_date key
    print record['join_date']

输出:

{ "_id" : ObjectId("94dbe4c6ea890e28113d7664"), "region" : "Virginia", "country_code" : "US", "customer_id" : "abc"}

KeyError: u'join_date'

1 个答案:

答案 0 :(得分:2)

这不是一个错误,sort in MongoDB应该如何运作:

  

比较将不存在的字段视为空BSON   宾语。因此,对文档{}和{a:null中的字段进行排序   将排序顺序视为等效的文档。

而且,既然你已经注意到了:

  

我想从所有记录中检索最早的日期   join_date字段

使用$exists检查join_date是否存在:

usercollection.find({
    'customer_id': 'abc',
    'join_date': {'$exists': True}
}).sort('join_date', 1)