我正在对其日期列中的集合进行排序,以查找该集合中的最小日期。但是,它会返回缺少日期键的记录。以下是片段。这是一个错误吗?
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'
答案 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)