使用jdbc驱动程序连接到MongoDB

时间:2015-10-06 13:09:15

标签: java mongodb jdbc mongodb-java mongo-java-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;

格式不正确。 不确定我在哪里弄错了。 感谢您的帮助。

6 个答案:

答案 0 :(得分:4)

您可以查看此项目:

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

有两个例子。

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

答案 1 :(得分: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

答案 2 :(得分:1)

我知道回答的时间很晚,但可能会帮助其他人。如果要从 cmd 编译并运行代码,则在编译之前,请为mongo.jar设置类路径,如下所示:

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

然后运行您的代码。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您正在寻找一个不支持如下所示的本机MongoDb查询的MongoDb JDBC驱动程序,请寻找DbSchema。驱动程序是Open Source on Bitbucket。根据经验,团队会响应所有功能或问题。

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

答案 5 :(得分:0)

第一个选项

const data = [
         {title: 'a', washday: 'true', cutday: 'false', colorday: 'true', deepconditionday: 'true'},
         {title: 'b', washday: 'false', cutday: 'true', colorday: 'false', deepconditionday: 'false'},
         {title: 'c', washday: 'true', cutday: 'false', colorday: 'true', deepconditionday: 'true'},
         {title: 'd', washday: 'false', cutday: 'false', colorday: 'false', deepconditionday: 'false'}
        ]
    
const filterData = (data, isWashDay, isCutDay, isColorDay, isDeepConditionDay)=>{
    return data.filter((item)=>{
         (isWashDay === 'any' | isWashDay ==== item.washday) &&
              (isCutDay === 'any' | isCutDay ==== item.cutday) &&
              (isColorDay === 'any' | isColorDay ==== item.colorday) &&
              (isDeepConditionDay === 'any' | isDeepConditionDay ==== item.deepconditionday) 
     })
}
console.log(filterData(data, 'true', 'any', 'any', 'any'))

另一个选项

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