簡體   English   中英

使用 jdbc 驅動程序連接到 MongoDB

[英]Connecting to MongoDB using jdbc driver

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

格式不正確。 不確定我在哪里犯了錯誤。 提前感謝您的幫助。

你可以簽出這個項目:

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

給出了兩個例子。

但總的來說,我建議使用 MongoDB Client 或一些 Spring Data 抽象。

如果您收到 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 文檔

我知道現在回答已經很晚了,但可能會幫助其他人。 如果您正在從cmd編譯和運行代碼,則在編譯之前為 mongo.jar 設置類路徑,如下所示:

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

然后運行你的代碼。

或者,如果您使用的是像 eclipse 這樣的編輯器,則將此 jar 添加到您的 lib 文件夾中。

我今天早上遇到了這個問題。 關鍵是缺少mongo-java-driver.jar 添加jar后,項目就可以正常運行了。

DbSchema數據庫設計器提供了一個開源 MongoDb JDBC 驅動程序,該驅動程序支持原生 MongoDb 查詢,包括 find()、投影、聚合等。該驅動程序使用內部嵌入式 JavaScript 引擎。 該驅動程序是GitHub 上的開源 驅動程序的幾個特點:

  • 支持原生MongoDb 查詢
  • 調用 DatabaseMetaData 方法可以“猜測”集合結構,因此創建了“虛擬模式”。 MongoDB 設計器使用它來表示 MongoDb 數據庫結構,如下圖所示。
  • 實現大部分 JDBC 驅動程序方法。 使用本機 MongoDB JDBC URL 進行連接,這意味着有關連接的完整功能。

MongoDB 的 DbSchema 圖設計

以及關於如何使用驅動程序的一段代碼

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

第一個選項

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM