使用jdbc驱动连接MongoDB

问题描述 投票:0回答:7

目的是通过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;

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

java mongodb jdbc mongodb-java mongo-java-driver
7个回答
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");

有关如何执行此操作的详细信息,请参阅 MongoDB 文档


1
投票

您可以查看此项目:

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

给出了两个例子。

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


1
投票

我知道回答已经很晚了,但可能会帮助别人。如果您从 cmd 编译并运行代码,则在编译之前为 mongo.jar 设置类路径,如下所示:

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

然后运行您的代码。

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


1
投票

DbSchema 数据库设计器提供了一个开源 MongoDb JDBC 驱动程序,它支持本机 MongoDb 查询,包括 find()、投影、聚合等。 该驱动程序使用内部嵌入式 JavaScript 引擎。 该驱动程序是GitHub 上的开源。 驱动程序的一些功能:

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

以及一段关于如何使用驱动程序的代码

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);

0
投票

我今天早上遇到了这个问题。 钥匙不见了

mongo-java-driver.jar
。 当我添加jar后,项目可以正常运行。


0
投票

第一个选项

    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);

0
投票

(我意识到这是一个非常迟到的答案,但由于我昨天还在为此苦苦挣扎,所以无论如何我都会发布它)

现在,Unity JDBC 驱动程序附带了完整的 Java 代码示例。简而言之:

  • 将 jar 文件包含在您的 CLASSPATH 中
  • 用 mongodb.jdbc 引用它

Java代码

<usual java.sql import stuff>
import mongodb.jdbc.MongoStatement;
 
...
    Connection con = null;
    String sql;

    try
    {
        // Create new instance of Mongo JDBC Driver and make connection.
        System.out.println("Registering Driver.");

        // Note: Registering driver using Class.forName() is not required.
        Class.forName("mongodb.jdbc.MongoDriver");

        // Connect to the URL. The last part is the database name (tpch in this case).
        String url = "jdbc:mongodb://server/database/tpch?rebuildschema=true";

        System.out.println("Making a connection to: " + url);
        con = DriverManager.getConnection(url, "user", "password");
        System.out.println("Connection successful.\n");
        ... <run queries etc>

构建+运行

javac -cp .;../unityjdbc.jar test/ExampleQuery.java
java -cp .;../unityjdbc.jar test.ExampleQuery
© www.soinside.com 2019 - 2024. All rights reserved.