三十二、MongoDB Java master ,这是我的小站 ,欢迎访问哦~~
JAVA 语言使用 MongoDB Java Driver 来访问 MongoDB 数据库
本章教程使用 mongodb-driver 3.5.0 版本,其它版本也类似
MongoDB Java Driver 环境配置 JAVA 程序中如果访问 MongoDB,需要安装了 JAVA 环境及 MongoDB Java 驱动
如果你还未安装 JAVA 环境,可以移步 JAVA 基础教程
现在,我们来安装配置 JAVA MongoDB 驱动
1、 首先下载 mongodb-driver-3.5.0.jar http://mongodb.github.io/mongo-java-driver/
s2、 然后将 mongo-java-driver-3.5.0.jar (或其它版本)放到 CLASSPATH 中
你也可以从地址下载 mongodb-driver jar:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/
Gradle 构建 JAVA MongoDB 运行环境 因为我实在不想把 jar 添加到 CLASSPATH 中,又不想用 MAVEN 这种 XML 配置方式,所以就使用了 Gradle 构建工具
配置步骤如下
1 2 3 4 5 $ mkdir hello $ cd hello $ mkdir -p src/main/java/com/baidu/www $ touch src/main/java/com/baidu/www/HelloWorld.java $ touch build.gradle
然后把以下内容复制到 build.gradle
文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 apply plugin: 'java' apply plugin: 'application' mainClassName = 'com.baidu.www.HelloWorld' repositories { mavenLocal() mavenCentral() } jar { baseName = 'helloworld-gradle' version = '0.1.0' } task wrapper (type: Wrapper) { gradleVersion = '1.11' } dependencies { compile 'org.mongodb:mongodb-driver:3.5.0' }
然后运行以下命令
1 2 3 $ gradle wrapper $ gradlew build $ gradlew run
MongoDB Java 连接数据库 souyunku 连接 MongoDB 数据库,需要指定数据库名称,如果指定的数据库不存在,MongoDB 会自动创建数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 package com.baidu.www;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.FindIterable;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.model.Filters;public class HelloWorld { public static void main ( String args[] ) { try { MongoClient mongoClient = new MongoClient ( "localhost" , 27017 ); MongoDatabase mongoDatabase = mongoClient.getDatabase("a" ); System.out.println("Connect to database souyunku successfully" ); }catch (Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
使用 gradlew run 运行以上 JAVA 代码,输出结果如下
1 2 $ gradlew run Connect to database a successfully
上面的范例,MongoDB 数据库不需要使用密码验证,如果需要使用密码验证,可以使用以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 package com.baidu.www;import java.util.ArrayList; import java.util.List; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.MongoDatabase; public class HelloWorld { public static void main (String[] args) { try { ServerAddress serverAddress = new ServerAddress ("localhost" ,27017 ); List<ServerAddress> addrs = new ArrayList <ServerAddress>(); addrs.add(serverAddress); MongoCredential credential = MongoCredential.createScramSha1Credential("a" , "b" , "123abc321" .toCharArray()); List<MongoCredential> credentials = new ArrayList <MongoCredential>(); credentials.add(credential); MongoClient mongoClient = new MongoClient (addrs,credentials); MongoDatabase mongoDatabase = mongoClient.getDatabase("a" ); System.out.println("Connect to database successfully" ); } catch (Exception e) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
使用 gradlew run 运行以上 JAVA 代码,输出结果如下
1 2 $ gradlew run Connect to database successfully
创建集合 com.mongodb.client.MongoDatabase 类中的 createCollection() 方法可以用来创建集合
下面的代码我们创建集合 language
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package com.baidu.www;import com.mongodb.MongoClient;import com.mongodb.client.MongoDatabase;public class HelloWorld { public static void main ( String args[] ) { try { MongoClient mongoClient = new MongoClient ( "localhost" , 27017 ); MongoDatabase mongoDatabase = mongoClient.getDatabase("souyunku" ); System.out.println("Connect to database successfully" ); mongoDatabase.createCollection("language" ); System.out.println("集合创建成功" ); }catch (Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
使用 gradlew run 运行以上 JAVA 代码,输出结果如下
获取集合 com.mongodb.client.MongoDatabase 类的 getCollection() 方法可以用来获取一个集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package com.baidu.www;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoDatabase;public class HelloWorld { public static void main ( String args[] ) { try { MongoClient mongoClient = new MongoClient ( "localhost" , 27017 ); MongoDatabase mongoDatabase = mongoClient.getDatabase("souyunku" ); System.out.println("Connect to database successfully" ); MongoCollection<Document> collection = mongoDatabase.getCollection("language" ); System.out.println("集合 language 选择成功" ); }catch (Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
使用 gradlew run 运行以上 JAVA 代码,输出结果如下
1 2 3 $ gradlew run Connect to database successfully 集合 language 选择成功
插入文档 com.mongodb.client.MongoCollection 类 的 insertMany() 方法可以插入一个文档
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 package com.baidu.www;import java.util.ArrayList;import java.util.List;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoDatabase;public class HelloWorld { public static void main ( String args[] ) { try { MongoClient mongoClient = new MongoClient ( "localhost" , 27017 ); MongoDatabase mongoDatabase = mongoClient.getDatabase("a" ); System.out.println("Connect to database successfully" ); MongoCollection<Document> collection = mongoDatabase.getCollection("language" ); System.out.println("集合 language 选择成功" ); Document document = new Document ("name" , "JAVA" ). append("description" , "language" ). append("likes" , 10000000 ). append("by" , "b" ); List<Document> documents = new ArrayList <Document>(); documents.add(document); collection.insertMany(documents); System.out.println("文档插入成功" ); }catch (Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
使用 gradlew run 运行以上 JAVA 代码,输出结果如下
1 2 3 4 $ gradlew run Connect to database successfully 集合 language 选择成功 文档插入成功
检索所有文档 com.mongodb.client.MongoCollection 类中的 find() 方法可以获取集合中的所有文档
此方法返回一个游标,因此我们需要遍历这个游标
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 package com.baidu.www;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.FindIterable;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;public class HelloWorld { public static void main ( String args[] ) { try { MongoClient mongoClient = new MongoClient ( "localhost" , 27017 ); MongoDatabase mongoDatabase = mongoClient.getDatabase("souyunku" ); System.out.println("Connect to database successfully" ); MongoCollection<Document> collection = mongoDatabase.getCollection("language" ); System.out.println("集合 language 选择成功" ); FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while (mongoCursor.hasNext()){ System.out.println(mongoCursor.next()); } }catch (Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
使用 gradlew run 运行以上 JAVA 代码,输出结果如下
1 2 3 4 $ gradlew run Connect to database successfully 集合 language 选择成功 Document{{_id=59ef06274844491a17679515, name=JAVA, description=language, likes=10000000, by=b}}
更新文档 com.mongodb.client.MongoCollection 类中的 updateMany() 方法可以更新集合中的文档
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package com.baidu.www;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.FindIterable;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.model.Filters;public class HelloWorld { public static void main ( String args[] ) { try { MongoClient mongoClient = new MongoClient ( "localhost" , 27017 ); MongoDatabase mongoDatabase = mongoClient.getDatabase("souyunku" ); System.out.println("Connect to database successfully" ); MongoCollection<Document> collection = mongoDatabase.getCollection("language" ); System.out.println("集合 language 选择成功" ); collection.updateMany(Filters.eq("likes" , 10000000 ), new Document ("$set" ,new Document ("likes" ,15000000 ))); FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while (mongoCursor.hasNext()){ System.out.println(mongoCursor.next()); } }catch (Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
使用 gradlew run 运行以上 JAVA 代码,输出结果如下
1 2 3 4 $ gradlew run Connect to database successfully 集合 language 选择成功 Document{{_id=59ef06274844491a17679515, name=JAVA, description=language, likes=15000000, by=b}}
删除第一个文档 要删除集合中的第一个文档
首先要使用 com.mongodb.DBCollection 类中的 findOne() 方法来获取第一个文档
然后使用 remove 方法删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 package com.baidu.www;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.FindIterable;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.model.Filters;public class HelloWorld { public static void main ( String args[] ) { try { MongoClient mongoClient = new MongoClient ( "localhost" , 27017 ); MongoDatabase mongoDatabase = mongoClient.getDatabase("souyunku" ); System.out.println("Connect to database successfully" ); MongoCollection<Document> collection = mongoDatabase.getCollection("language" ); System.out.println("集合 language 选择成功" ); collection.deleteOne(Filters.eq("likes" , 15000000 )); collection.deleteMany (Filters.eq("likes" , 15000000 )); FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while (mongoCursor.hasNext()){ System.out.println(mongoCursor.next()); } }catch (Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
使用 gradlew run 运行以上 JAVA 代码,输出结果如下
1 2 3 $ gradlew run Connect to database successfully 集合 language 选择成功
延伸阅读 1、 更多操作可以参考: https://docs.mongodb.com/
2、 参考文档:http://blog.csdn.net/ererfei/article/details/50857103