我audit_records
集合是如下:MongoDB的聚集和組的ID及日期
{u'policy_holder': u'Kapil', u'_id': ObjectId('4d663451d1e7242c4b68e000'), u'audit_time': datetime.datetime(2015, 9, 6, 10, 5, 12, 474000), u'policy_ids': [u'92b7bbfa-688e9e5304d5'], u'category': u'TIManagement'}
{u'policy_holder': u'Sunil', u'_id': ObjectId('4d6634514cb5cb2c4b69e000'), u'audit_time': datetime.datetime(2015, 9, 6, 11, 5, 12, 474000), u'policy_ids': [u'92b7bbfa-688e9e5304d5'], u'category': u'PIManagement'}
{u'policy_holder': u'Edward', u'_id': ObjectId('4d6634514cb5cb2c4b65e000'), u'audit_time': datetime.datetime(2015, 8, 3, 12, 4, 2, 723000), u'policy_ids': [u'92b7ccge-688e9e5304d5'], u'category': u'TIManagement'}
我被policy_ids
查詢使用聚集和管道組我的數據庫,並沒有與policy_ids
和相關policy_holder
我的代碼如下:
startdate = datetime.datetime.strptime("2015-01-06",'%Y-%m-%d')
enddate = datetime.datetime.strptime("2015-10-01",'%Y-%m-%d')
pipe = [{'$match':{"audit_time": {"$gt": startdate,"$lte": enddate}}},{'$group': {'_id': '$policy_ids', 'policy_holder': {'$sum': 1}}}]
for data in db.audit_records.aggregate(pipeline=pipe):
出了:
{u'policy_holder': 2, u'_id': u'92b7bbfa-688e9e5304d5'}
{u'policy_holder': 1, u'_id': u'92b7ccge-688e9e5304d5'}
現在想按日期分組這個整個輸出,這是可能的和如何?
你想按日期分組? –
是的,先按policy_id分組,然後按日期分組。 基本上我想要的是在給定的日期列出沒有策略ID,以及策略ID的policy_holder的數量。如何通過日期實現這個 –
如何?日期是每個文檔上的單獨項目,因此在第一個分組過程中挑選哪一個項目?第一?持續?的最小值?最大?然後按日期分組是什麼?大概是「一天」? –