本地Mongo构造函数不带参数

时间:2014-04-04 02:27:03

标签: java javascript mongodb collections

这个问题就像MongoDB - copy collection in java without looping all items 但是,使用Java MongoDB驱动程序解决问题并不清楚。

我想将一个集合的一部分从远程mongodb复制到本地mongodb。远程使用ssh并作为端口27018进行寻址。

在mongodb shell中运行它:

C:\mongodb\bin>mongo
MongoDB shell version: 2.4.9
connecting to: test
> var db2 = connect("localhost:27018/github");
connecting to: localhost:27018/github
> var db1 = connect("localhost:27017/github");
connecting to: localhost:27017/github

但是,Java中的相同内容会产生此错误:

错误:本地Mongo构造函数在src / mongo / shell / mongo.js中没有args:147

Java code snippet:

    logger.debug("Starting mongo shell execution.");
    final MongoClient Client = newMongoClient(host.getStringValue(), port.getIntValue());
    final DB db = connectDB(Client, dB.getStringValue(), false);
    logger.debug("Mongo execution script: " + script.getStringValue());
    logger.info("Mongo execution result: " + db.eval(script.getStringValue()));         

使用eval:

执行脚本
var db2 = connect("localhost:27018/github");
db2.getMongo().setSlaveOk();
var db1 = connect("localhost:27017/github");        

如果将其作为脚本运行,也会发生同样的错误。 我还将它作为服务器脚本运行,基于:http://docs.mongodb.org/manual/tutorial/store-javascript-function-on-server/

将脚本保存在服务器上,然后执行:

db.system.js.save(
  { _id: "KScript",
    value: function() {
    var db2 = connect("localhost:27018/github");
    db2.getMongo().setSlaveOk();
    var db1 = connect("localhost:27017/github");
    }
  }
 )
 db.eval("KScript()")
 db.system.js.remove( { "_id" : "KScript" } );

在基于Java的eval或服务器脚本中,错误是相同的: 错误:本地Mongo构造函数在src / mongo / shell / mongo.js中没有args:147

然而,在mongodb shell中,它可以工作。

有什么想法吗?

0 个答案:

没有答案