2015-05-26 2 views
1

Я пытаюсь запустить код map-reduce с использованием метода db.eval().Ошибка в db.eval() в MongoDB

MongoClient mongo = new MongoClient("localhost", 27017); 
    DB mongodb = (DB) mongo.getDB("testDB"); 

    String script = "db.collection.mapReduce(" 
      + "function() {emit(this.class, this.marks);}," 
      + "function(key, values) { return {\"sum\":Array.sum(values)};}," 
       + "{ " 
        + " query : {_id:{$lt:50}}," 
        + "out:\"collectionMapReduce\"" 
       + "}" 
      + ")"; 

    Object result = mongodb.eval(script); 

я получил следующее сообщение об ошибке:

Exception in thread "main" com.mongodb.MongoException$Network: Read operation to server localhost:27017 failed on database testDB 
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:298) 
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:269) 
at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84) 
at com.mongodb.DB.command(DB.java:320) 
at com.mongodb.DB.command(DB.java:299) 
at com.mongodb.DB.command(DB.java:374) 
at com.mongodb.DB.command(DB.java:246) 
at com.mongodb.DB.doEval(DB.java:445) 
at com.mongodb.DB.eval(DB.java:463) 
at com.dev.TestMapReduce.main(TestMapReduce.java:25) 

Caused by: java.io.EOFException 
at org.bson.io.Bits.readFully(Bits.java:75) 
at org.bson.io.Bits.readFully(Bits.java:50) 
at org.bson.io.Bits.readFully(Bits.java:37) 
at com.mongodb.Response.<init>(Response.java:42) 
at com.mongodb.DBPort$1.execute(DBPort.java:164) 
at com.mongodb.DBPort$1.execute(DBPort.java:158) 
at com.mongodb.DBPort.doOperation(DBPort.java:187) 
at com.mongodb.DBPort.call(DBPort.java:158) 
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:290) 
... 9 more 

Я не в состоянии понять причину этой ошибки. Как я могу это решить?

Примечание: Я могу выполнить это задание, используя db.collection.mapReduce(). Но я просто пытаюсь добиться этого с помощью db.eval()

ответ

1

Правильный способ запустить карту/уменьшить работа через mapReduce command, которая подвергается в драйвере Java через MapReduceCommand helper.

eval command не предназначен для этой цели (а также устарел, как и в MongoDB 3.0).

Смежные вопросы