2015-05-03 50 views
2

我試圖做一個簡單的GROUP BY/COUNT MongoDB中與此聚集查詢:如何將項目分組到mongodb中的對象?

{ 
    $match:{ 
    'os':7 
    } 
}, 
{ 
    $group : { 
    _id:"$status", 
    count:{$sum:1} 
    } 
}, 
{ 
    $project:{ 
    count:1, 
    status:1 
    } 
} 

這回這樣

[{ "_id" : "ENC", "count" : 18 } 
{ "_id" : "INT", "count" : 363 } 
{ "_id" : "ANN", "count" : 132 }] 

數組有沒有項目的結果的方式一個對象,使用分組字段作爲關鍵? 例如:

{ 
    ENC:18, 
    INT:363, 
    ANN:132 
} 

感謝

回答

1

我不認爲MongoDB的聚合框架具有$project操作,可以字段值轉換成鍵。你可以嘗試使用forEach()光標方法來遍歷投射字段轉換聚集結果和使用JavaScript的bracket-notation結果對象上然後創建所需的最終目標:

var result = [ 
    { "_id" : "ENC", "count" : 18 }, 
    { "_id" : "INT", "count" : 363 }, 
    { "_id" : "ANN", "count" : 132 } 
]; 
var obj = {}; 
result.forEach(function (doc){ 
    obj[doc._id] = doc.count; 
}); 
printjson(obj); // {ENC: 18, INT: 363, ANN: 132} 
相關問題