使用jdbc驱动程序连接到MongoDB

4

目的是通过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 ); - Natalia
谢谢回复,我已经尝试过了,但要求使用JDBC连接器。 - manoj
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文档


谢谢,但我没有得到mongodb的jar文件,它有这个路径和类MongoDriver。我还在Unity-jdbc论坛上检查过了,但是他们的jar文件也没有相同的东西。 - manoj

1
我知道回复已经很晚了,但这可能会对其他人有所帮助。如果您正在从cmd编译和运行代码,则在编译之前设置mongo.jar的类路径,如下所示:

set classpath=C:\DemoProject\java db\Mongo\mongo.jar;

然后运行您的代码。

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


1

DbSchema 数据库设计师提供了一个开源的MongoDb JDBC驱动程序,支持原生的MongoDb查询,包括find()、projections、aggregate等等。 该驱动程序使用内部嵌入式JavaScript引擎。 该驱动程序在GitHub上开源。 一些驱动程序的特点:

  • 支持原生的MongoDb查询
  • 调用DatabaseMetaData方法可以“猜测”集合结构,因此创建了一个“虚拟模式”。这被MongoDB设计师用于以类似下面的图表形式表示MongoDb数据库结构。
  • 实现了大多数JDBC驱动程序方法。使用本机MongoDB JDBC URL进行连接,这意味着完全具备连接功能。

DbSchema Diagram Design for MongoDB

还有一个关于如何使用驱动程序的代码片段

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

1
你可以查看这个项目: https://github.com/erh/mongo-jdbc 其中有两个示例。
但总的来说,我建议使用MongoDB客户端或一些Spring Data抽象。

7
您提供的链接 https://github.com/erh/mongo-jdbc 现在已经无法访问(404错误)。 - FullStackDeveloper
链接:https://github.com/mongodb/mongo-jdbc-driver - undefined

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 driver附带了一个完整的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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接