【问题标题】:Connecting to MongoDB using jdbc driver使用 jdbc 驱动程序连接到 MongoDB
【发布时间】:2015-10-06 13:09:14
【问题描述】:

目的是通过JAVA连接MongoDB远程服务器:

    URL = "jdbc:mongo://" + serverIP + ":"
    + port+ "/" +databaseName;                     
    Class.forName("mongodb.jdbc.MongoDriver");
    dbConn = getConnection(URL,mongo1, mongo1);

尝试过 Unity_trial.Jar、mongo_version.jar 文件,但错误是 'mongodb.jdbc.MongoDriver' classNameNotFound。

如果我注释 class.forname 行,下一个错误是

   URL = "jdbc:mongo://" + serverIP + ":" + port
    + "/" +databaseName;

格式不正确。 不知道我在哪里犯了错误。 提前感谢您的帮助。

【问题讨论】:

  • 你试过MongoClient吗? MongoClient mongo = new MongoClient( "localhost" , 27017 );
  • 感谢回复,我试过了,但要求是使用jdbc连接器。

标签: java mongodb jdbc mongodb-java mongo-java-driver


【解决方案1】:

你可以签出这个项目:

https://github.com/erh/mongo-jdbc

给出了两个例子。

但总的来说,我建议使用 MongoDB 客户端或一些 Spring Data 抽象。

【讨论】:

【解决方案2】:

如果您收到 ClassNotFoundException,问题是包含 mongodb.jdbc.MongoDriver 类的 jar 不在您的类路径中。如果您不确定这个类在哪个 JAR 中,我建议您获取 7-Zip,以便您可以检查 jar 的内容并亲自查看该类是否存在。

使用您的方法连接到 MongoDB 的正确方法是:

Class.forName("mongodb.jdbc.MongoDriver");
String URL = "jdbc:mongo://<servername>:<port>/<databaseName>";
Connection jdbcConn = DriverManager.getConnection(url,"user","pass");


但是 MongoDB 并不是真的要与 JDBC 一起使用,所以如果您的要求允许,我建议您以“mongodb”方式获取连接。

MongoClient client = new MongoClient("localhost");

关于如何做到这一点的详细信息,see the MongoDB docs

【讨论】:

  • 谢谢,但我没有得到 mongodb jar 文件,它有这个路径和 MongoDriver 类。我也查了Unity-jdbc论坛,但是jar文件也不一样。
【解决方案3】:

我知道现在回答很晚,但可能会帮助其他人。如果您正在从 cmd 编译和运行代码,那么在编译之前为 mongo.jar 设置类路径,如下所示:

设置类路径=C:\DemoProject\java db\Mongo\mongo.jar;

然后运行您的代码。

或者,如果您使用的是 eclipse 之类的编辑器,则将此 jar 添加到您的 lib 文件夹中。

【讨论】:

    【解决方案4】:

    我今天早上遇到了这个问题。 缺少密钥mongo-java-driver.jar。 当我添加jar时,项目可以正常运行。

    【讨论】:

      【解决方案5】:

      DbSchema 数据库设计者正在提供一个开源的 MongoDb JDBC 驱动程序,它支持原生 MongoDb 查询,包括 find()、投影、聚合等。 驱动程序使用内部嵌入式 JavaScript 引擎。 司机是Open Source on GitHub。 驱动程序的一些功能:

      • 支持原生MongoDb queries
      • 调用 DatabaseMetaData 方法可以“猜测”集合结构,因此创建了一个“虚拟模式”。 Designer for MongoDB 使用它来表示如下图中的 MongoDb 数据库结构。
      • 实现大多数 JDBC 驱动程序方法。使用本机 MongoDB JDBC URL 进行连接,这意味着有关连接的完整功能。

      还有一段关于如何使用驱动的sn-p代码

      Class.forName("com.dbschema.MongoDbJdbcDriver");
      Properties properties = new Properties();
      properties.put("user", "someuser");
      properties.put("password", "somepassword" );
      Connection con = DriverManager.getConnection("jdbc:mongodb://host1:9160/keyspace1", properties);
      // OTHER URL (SAME AS FOR MONGODB NATIVE DRIVER): mongodb://db1.example.net,db2.example.net:2500/?replicaSet=test&connectTimeoutMS=300000
      String query = "db.sampleCollection().find()";
      Statement statement = con.createStatement();
      ResultSet rs = statement.executeQuery( query );
      Object json = rs.getObject(1);
      

      【讨论】:

        【解决方案6】:

        第一个选项

            MongoClient mongoClient = new MongoClient( "1.2.3.4",27017 );
            MongoDatabase database =  mongoClient.getDatabase(dataBase);
            MongoCollection<Document> collection = database.getCollection(DBcollection);
        

        另一种选择

         MongoClientURI connectionString = new MongoClientURI("mongodb://1.2.3.4:27017");
             MongoClient mongoClient = new MongoClient(connectionString);
            MongoDatabase database =  mongoClient.getDatabase(dataBase);
            MongoCollection collection = database.getCollection(DBcollection);
        

        【讨论】:

          猜你喜欢
          • 2016-12-22
          • 1970-01-01
          • 2016-09-07
          • 1970-01-01
          • 1970-01-01
          • 2013-11-11
          • 2014-07-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多