0

Mongo にデータがあるとします。いくつかのプロジェクトがあり、問題を担当するマネージャーがいます。プロジェクトにはさまざまな部分があるため、各問題はさまざまな人に割り当てられます。各担当者はプロジェクト内で割り当てられています。例えば:

{
    "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" 
}
....
}
4

2 に答える 2

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);
    }
}
于 2013-01-15T11:03:09.820 に答える
0

あなたが提供するデータサンプルはかなり紛らわしいです。そのプロジェクト A とプロジェクト B は異なるドキュメントであるはずです。グループの最善の使用法は、コレクション内で集計することだと思います。ドキュメント内でカウントしたい場合は、javascript を使用できます。

于 2013-01-15T07:55:22.397 に答える