2016-07-02 8 views
1

まず、MongoDBを初めて使用しました.MongoDBを使用して大規模データ分析を行いたいと思います。私の質問に
私は、次のデータMongoDB MapReduce複合キーの問題

db.EIRLogs2.find() 
{ "_id" : ObjectId("57772d1f152d447caa142fbf"), "NAME" : "Kamal", "AGE" : 20, "MARKS" : 100 } 
{ "_id" : ObjectId("57772d1f152d447caa142fc0"), "NAME" : "Kamal", "AGE" : 30, "MARKS" : 300 } 
{ "_id" : ObjectId("57772d1f152d447caa142fc1"), "NAME" : "Sunil", "AGE" : 30, "MARKS" : 300 } 
{ "_id" : ObjectId("57772d1f152d447caa142fc2"), "NAME" : "Sunil", "AGE" : 30, "MARKS" : 400 } 
{ "_id" : ObjectId("57772d1f152d447caa142fc3"), "NAME" : "Kasun", "AGE" : 20, "MARKS" : 100 } 
{ "_id" : ObjectId("57772d1f152d447caa142fc4"), "NAME" : "Kamal", "AGE" : 20, "MARKS" : 100 } 
{ "_id" : ObjectId("57772d1f152d447caa142fc5"), "NAME" : "Kasun", "AGE" : 20, "MARKS" : 100 } 
{ "_id" : ObjectId("57772d1f152d447caa142fc6"), "NAME" : "Sunimal", "AGE" : 30, "MARKS" : 100 } 
{ "_id" : ObjectId("57772d1f152d447caa142fc7"), "NAME" : "Kamal", "AGE" : 20, "MARKS" : 600 } 

でMonogoDBコレクションを持っていると私は、上記のデータ・セットにMapReduceの機能を適用し、私は以下の使用

{ "_id" : "Kamal", "AGE" : 20, "value" : 800 } 
{ "_id" : "Kamal", "AGE" : 30, "value" : 300 } 
{ "_id" : "Kasun", "AGE" : 20, "value" : 200 } 
{ "_id" : "Sunil", "AGE" : 30, "value" : 700 } 
{ "_id" : "Sunimal", "AGE" : 20, "value" : 100 } 

以下のように答えを得ることを期待していますコードは、答えの上に取得するが、それは

db.EIRLogs2.mapReduce( 
     function() { 
      emit({this.NAME,this.AGE}, this.MARKS); 
     }, 
     function(key,values){ 
     return Array.sum(values) 
     }, 
     { out: "ETom" } 
) 

は、私は次のようなエラー

0123を得たエラーを返しました
Sat Jul 2 09:17:32 SyntaxError: missing : after property id (shell):1 

私は非常にあなたが名前を指定しないと、あなたのemitでオブジェクトリテラルは有効な式ではありません

答えて

1

この問題を解決するためにあなたの助けに感謝。次のように問題を解決する必要があります:

db.EIRLogs2.mapReduce.mapReduce( 
     function() { 
      emit(
       { name: this.NAME, age: this.AGE }, 
       this.MARKS 
      ); 
     }, 
     function(key,values) { 
     return Array.sum(values) 
     }, 
     { 
      out: "ETom" 
     } 
) 
+0

ありがとう – Kavinda