0
我想聚合使用Pymongo與多個字段,但我還沒有找到一種方法來獲得正確的值。Pymongo聚合與多字段
我需要2場拿到總文件數:time
和state
time
是通過pymongo一個DateTime對象,我能得到的只有YY/MM使用
'$group': { "_id":{
"date":{"$concat": [
{"$substr": [{"$year": "$date"}, 0, 4 ]},
"-",
{"$substr": [{"$month": "$date"}, 0, 2 ]},
"-",
{"$substr": [{"$dayOfMonth": "$date"}, 0, 2 ]},
]}},
"count":{"$sum": 1}}
/DD
這可以得到我提取正確的日期和計數日誌的數量,但現在我需要也分組state
所以它變成GROUP BY date, state
在mysql
我試着添加它內部_id
'$group': { "_id":{
"date":{"$concat": [
{"$substr": [{"$year": "$date"}, 0, 4 ]},
"-",
{"$substr": [{"$month": "$date"}, 0, 2 ]},
"-",
{"$substr": [{"$dayOfMonth": "$date"}, 0, 2 ]},
]}},
"_id":{"state":"$timeline.state"},
"count":{"$sum": 1}}
和它在像{u'count': 4111, u'_id': {u'state': [0, 1]}}
格式創建多個輸出,0和1是用於不同的狀態碼。日期無處可尋。
我又試圖
'$group': { "_id":{
"date":{"$concat": [
{"$substr": [{"$year": "$date"}, 0, 4 ]},
"-",
{"$substr": [{"$month": "$date"}, 0, 2 ]},
"-",
{"$substr": [{"$dayOfMonth": "$date"}, 0, 2 ]},
]}},
"state":"$timeline.state"},
"count":{"$sum": 1}}
,我得到了failed: A pipeline stage specification object must contain exactly one field.
這看起來像我沒有在正確的地方括號,但無論怎樣我改變格式,同樣的錯誤遺體。現在我想知道是否真的是支架的問題。最重要的是,我如何正確地做到這一點?
我明白了。所以一切都必須在'_id'括號內。我想我現在已經開始工作了。只有一個'count'就行了,對吧?我不需要先計算'date',然後再次計算'state'? – JChao