2013-01-14 152 views
0

假設Mongo中有數據!有幾個項目,還有管理者,分配問題的人。由於項目有不同的部分,每個問題都分配給不同的人。 如何計算每個受讓人在項目中分配的編號。 例如:如何在MongoDB中創建嵌套組?

{ 
    "Project A": { 
      "Ted":10, 
      "Matt":5 
      }, 
    "Project B": { 
      "Mary":3, 
      "Hector":30 
      } 
} 

下面寫的總和,但沒有組吧:

db.test.issues.group({ 
    "key": { 
     "project": true 
     "assignee":true 
    }, 
    "initial": { 
     "countassignee": 0 
    }, 
    "reduce": function(obj, prev) { 
     prev.countassignee++; 
    } 
}); 

它會返回:

{ 
{ 
"project": "Project A", 
"countassignee":10, 
"assignee":"Ted" 
} 
.... 
} 
+1

不知道你在問什麼。請澄清。特別是你嘗試過哪些方面沒有奏效? – mjhm

回答

0

好的!它似乎不是最好的答案,但它會做! 首先定義一個光標通過項目

var cursor = db.test.find().sort({projects:1}); 

爲計數器列表排序:

var asgn_nums = {}; 

和可變控股項目名稱;:

var project = '0'; 

這裏計算每個項目:

while (cursor.hasNext()) { 
    var issue = cursor.next(); 
    var p = issue.project; 
    if(p != project) 
    { 
     if(project != '0'){ 
      print(project+":"); 
      printjson(asgn_nums); 
     } 
     project = p; 
     asgn_nums = {}; 
    } 
    if(issue.assignee != null) 
    { 
     if (asgn_nums[issue.assignee] == null) 
      asgn_nums[issue.assignee] = 1; 
     else 
      asgn_nums[issue.assignee]+= 1; 
    } 
    if(!cursor.hasNext()) 
    { 
     print(project+":"); 
     printjson(asgn_nums); 
    } 
} 
0

數據樣本提供您所相當混亂。其項目A和項目B應該是不同的文件。 我相信組的最佳用途是在一個集合中進行混合,如果你想在一個doucment內計數,你可以使用javascript。