mongodb でカンマ区切りの値を含むフィールドを分割し、フィールド内の値をカウントするには、mapreduce が必要です。
1780 次
1 に答える
1
以下に示すサンプル文書を作成しました。
{ "_id" : ObjectId("5060017f6fd0f104e16540a2"), "field" : "1,2,3,4,5" }
{ "_id" : ObjectId("506001866fd0f104e16540a3"), "field" : "1,2,3" }
{ "_id" : ObjectId("5060018e6fd0f104e16540a4"), "field" : "1,2,3,7,8,9,0,4,3" }
{ "_id" : ObjectId("506001926fd0f104e16540a5"), "field" : "1" }
{ "_id" : ObjectId("506001966fd0f104e16540a6"), "field" : "1,5" }
次に、次の map/reduce クエリを実行して、目的を達成できます。
map = function() {
var array = this.field.split(',');
emit(this.field, array.length);
}
reduce = function(key, values) {
return values;
}
result = db.runCommand({
"mapreduce" : "comma",
"map" : map,
"reduce" : reduce,
"out" : "comma_result"
});
結果は次のとおりです。
> db.comma_result.find();
{ "_id" : "1", "value" : 1 }
{ "_id" : "1,2,3", "value" : 3 }
{ "_id" : "1,2,3,4,5", "value" : 5 }
{ "_id" : "1,2,3,7,8,9,0,4,3", "value" : 9 }
{ "_id" : "1,5", "value" : 2 }
于 2012-09-24T06:49:40.637 に答える