1

Mongo DB-データの集約(MongoDB 2.1.0-不安定なリリース):

db.test.save({serverName:'abc123', info:[12,43,23,10]});

db.test.save({serverName:'abc123', info:[12,22,19,11]});

db.test.aggregate({$group:{_id:"$serverName", infoTotal:{ $sum : "$info"}}});

Response: "errmsg" : "exception: the _id field for a group must not be undefined",

http://www.mongodb.org/display/DOCS/Aggregation+Framework+-+%24groupの例として、私が何を間違っているのかわからない

集計がどのように実行されるかを示します。

いくつかの支援をいただければ幸いです。ありがとう。

4

1 に答える 1

0

2 つの問題があります。

1.) コレクションに serverName がないドキュメントがいくつかあります。find({serverName:null}) を実行してそれらを見つけることができます

2.) 最初に配列を $unwind する必要があります

これが実際のサンプルです:

> db.agg1.find()
{ "_id" : 1, "serverName" : "abc123", "info" : [ 12, 43, 23, 10 ] }
{ "_id" : 2, "serverName" : "abc124", "info" : [ 12, 22, 19, 11 ] }
{ "_id" : 3, "serverName" : "abc124", "info" : [ 1, 25, 2, 11 ] }

> db.agg1.aggregate({$unwind: "$info"},{$group:{_id:"$serverName", infoTotal:{ $sum : "$info"}}});
{
        "result" : [
                {
                        "_id" : "abc123",
                        "infoTotal" : 88
                },
                {
                        "_id" : "abc124",
                        "infoTotal" : 103
                }
        ],
        "ok" : 1
}
于 2012-04-10T14:57:34.240 に答える