【MongoDB】5.MongoDB与java的简单结合
1.首先 你的清楚你的MongoDB的版本是多少 就下载对应的架包
下载地址如下:
http://mongodb.github.io/mongo-java-driver/
2.新建一个项目 把架包扔进去,并Build path到你的项目下【如果用于测试,请如下 多用一个架包】
3.新建一个MongoConnection类 用来获取MongoDB的连接对象:
package com.mongo.util;
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 MongoConnection {
/**
* 需要验证用户名 密码的 MongoDB的连接方式 com.mongodb.MongoClient.getDatabase("数据库名")
* @return
*/
public MongoDatabase getConnection() {
try {
//连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost",27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(addrs,credentials);
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");
System.out.println("连接成功");
return mongoDatabase;
} catch (Exception e) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
return null;
}
/**
* 不需要验证 用户名+密码 的获取连接的方式 com.mongodb.MongoClient.getDatabase("数据库名")
* @return
*/
public MongoDatabase getConnectionBasis(){
try {
//连接到mongodb服务
MongoClient mongoClient = new MongoClient("localhost",27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");
System.out.println("连接成功");
return mongoDatabase;
} catch (Exception e) {
System.out.println(e.getClass().getName()+":"+e.getMessage());
}
return null;
}
}
1 package com.mongo.util; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.mongodb.MongoClient; 7 import com.mongodb.MongoCredential; 8 import com.mongodb.ServerAddress; 9 import com.mongodb.client.MongoDatabase; 10 11 public class MongoConnection { 12 13 /** 14 * 需要验证用户名 密码的 MongoDB的连接方式 com.mongodb.MongoClient.getDatabase("数据库名") 15 * @return 16 */ 17 public MongoDatabase getConnection() { 18 try { 19 //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址 20 //ServerAddress()两个参数分别为 服务器地址 和 端口 21 ServerAddress serverAddress = new ServerAddress("localhost",27017); 22 List<ServerAddress> addrs = new ArrayList<ServerAddress>(); 23 addrs.add(serverAddress); 24 25 //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码 26 MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray()); 27 List<MongoCredential> credentials = new ArrayList<MongoCredential>(); 28 credentials.add(credential); 29 30 //通过连接认证获取MongoDB连接 31 MongoClient mongoClient = new MongoClient(addrs,credentials); 32 33 //连接到数据库 34 MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName"); 35 System.out.println("连接成功"); 36 return mongoDatabase; 37 } catch (Exception e) { 38 System.err.println( e.getClass().getName() + ": " + e.getMessage() ); 39 } 40 return null; 41 } 42 43 /** 44 * 不需要验证 用户名+密码 的获取连接的方式 com.mongodb.MongoClient.getDatabase("数据库名") 45 * @return 46 */ 47 public MongoDatabase getConnectionBasis(){ 48 try { 49 //连接到mongodb服务 50 MongoClient mongoClient = new MongoClient("localhost",27017); 51 MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName"); 52 System.out.println("连接成功"); 53 return mongoDatabase; 54 } catch (Exception e) { 55 System.out.println(e.getClass().getName()+":"+e.getMessage()); 56 } 57 return null; 58 } 59 60 }
4.再建一个类 用来测试 你的增删改查
package com.mongo.test;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import org.junit.Test;
import com.mongo.util.MongoConnection;
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 MongoTest {
MongoConnection connection = new MongoConnection();
//连接到数据库
MongoDatabase mongoDatabase = connection.getConnectionBasis();
@Test
public void test(){
//createCollection();//创建 集合 一次就好
MongoCollection<Document> collection = getCollection();
insertDomcument(collection);
findAll(collection);
//delete(collection);
}
/**
* 创建 集合【对应RDBMS 中的数据表】 com.mongodb.client.MongoDatabase.createCollection("集合名")
*/
public void createCollection(){
mongoDatabase.createCollection("testConllection");
System.out.println("创建集合成功");
}
/**
* 获取 集合【对应RDBMS 中的数据表】com.mongodb.client.MongoDatabase.getCollection("集合名")
*/
public MongoCollection<Document> getCollection(){
MongoCollection<Document> collection = mongoDatabase.getCollection("testConllection");
System.out.println("转换到指定集合");
return collection;
}
/**
* 插入 文档【对应RDBMS 中的一条数据】com.mongodb.client.MongoCollection<Document>.insertOne()/insertMany()
*/
public void insertDomcument(MongoCollection<Document> collection){
/**
* 1. 创建文档 org.bson.Document 参数为key-value的格式
* 2. 创建文档集合List<Document>
* 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document)
* */
Document document = new Document();
document.append("name", "走四方");
document.append("age", 23);
document.append("url", "www.baidu.com");
List<Document> list = new ArrayList<Document>();
list.add(document);
collection.insertMany(list);
System.out.println("插入文档成功");
//插入 单条数据
Document t = new Document();
t.append("name", "走什么");
t.append("age", 26);
t.append("url", "www.agen.cn");
collection.insertOne(t);
System.out.println("插入单条数据成功");
}
/**
* 查询 所有文档【表内 数据】com.mongodb.client.MongoCollection<Document>.find()
* 查询 本条数据的时间节点 _id采用ObjectId格式
*
* ObjectId 是一个12字节 BSON 类型数据,有以下格式:
前4个字节表示时间戳
接下来的3个字节是机器标识码
紧接的两个字节由进程id组成(PID)
最后三个字节是随机数。
*/
public void findAll(MongoCollection<Document> collection){
/**
* 1. 获取迭代器FindIterable<Document>
* 2. 获取游标MongoCursor<Document>
* 3. 通过游标遍历检索出的文档集合
* */
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
Document document = mongoCursor.next();
System.out.println("MongoDB数据:"+document);
System.out.println("本地时间:"+new SimpleDateFormat().format(document.getObjectId("_id").getDate()));
}
}
/**
* 更新 所有文档【表内 数据】com.mongodb.client.MongoCollection<Document>.updateMany()
*/
public void update(MongoCollection<Document> collection){
collection.updateMany(Filters.eq("age", 26), new Document("$set",new Document("age",100)));
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> cursor = findIterable.iterator();
while (cursor.hasNext()) {
System.out.println("更新后的MongoDB数据:"+cursor.next());
}
}
/**
* 删除 文档 com.mongodb.client.MongoCollection<Document>.deleteMany()/deleteOne()
*/
public void delete(MongoCollection<Document> collection){
// 删除符合条件的 第一个文档
collection.findOneAndDelete(Filters.eq("age", 26));
//删除符合条件的 所有文档
collection.deleteMany(Filters.gte("age", 20));
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> cursor = findIterable.iterator();
while(cursor.hasNext()){
System.out.println("删除后的MongoDB数据:"+cursor.next());
}
}
}
1 package com.mongo.test; 2 3 4 import java.text.SimpleDateFormat; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import org.bson.Document; 9 import org.junit.Test; 10 11 import com.mongo.util.MongoConnection; 12 import com.mongodb.client.FindIterable; 13 import com.mongodb.client.MongoCollection; 14 import com.mongodb.client.MongoCursor; 15 import com.mongodb.client.MongoDatabase; 16 import com.mongodb.client.model.Filters; 17 18 public class MongoTest { 19 20 MongoConnection connection = new MongoConnection(); 21 //连接到数据库 22 MongoDatabase mongoDatabase = connection.getConnectionBasis(); 23 24 25 @Test 26 public void test(){ 27 //createCollection();//创建 集合 一次就好 28 MongoCollection<Document> collection = getCollection(); 29 insertDomcument(collection); 30 findAll(collection); 31 //delete(collection); 32 } 33 34 /** 35 * 创建 集合【对应RDBMS 中的数据表】 com.mongodb.client.MongoDatabase.createCollection("集合名") 36 */ 37 public void createCollection(){ 38 mongoDatabase.createCollection("testConllection"); 39 System.out.println("创建集合成功"); 40 } 41 42 /** 43 * 获取 集合【对应RDBMS 中的数据表】com.mongodb.client.MongoDatabase.getCollection("集合名") 44 */ 45 public MongoCollection<Document> getCollection(){ 46 MongoCollection<Document> collection = mongoDatabase.getCollection("testConllection"); 47 System.out.println("转换到指定集合"); 48 return collection; 49 } 50 51 /** 52 * 插入 文档【对应RDBMS 中的一条数据】com.mongodb.client.MongoCollection<Document>.insertOne()/insertMany() 53 */ 54 public void insertDomcument(MongoCollection<Document> collection){ 55 /** 56 * 1. 创建文档 org.bson.Document 参数为key-value的格式 57 * 2. 创建文档集合List<Document> 58 * 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document) 59 * */ 60 Document document = new Document(); 61 document.append("name", "走四方"); 62 document.append("age", 23); 63 document.append("url", "www.baidu.com"); 64 65 List<Document> list = new ArrayList<Document>(); 66 list.add(document); 67 68 collection.insertMany(list); 69 System.out.println("插入文档成功"); 70 71 //插入 单条数据 72 Document t = new Document(); 73 t.append("name", "走什么"); 74 t.append("age", 26); 75 t.append("url", "www.agen.cn"); 76 77 collection.insertOne(t); 78 System.out.println("插入单条数据成功"); 79 } 80 81 /** 82 * 查询 所有文档【表内 数据】com.mongodb.client.MongoCollection<Document>.find() 83 * 查询 本条数据的时间节点 _id采用ObjectId格式 84 * 85 * ObjectId 是一个12字节 BSON 类型数据,有以下格式: 86 前4个字节表示时间戳 87 接下来的3个字节是机器标识码 88 紧接的两个字节由进程id组成(PID) 89 最后三个字节是随机数。 90 */ 91 public void findAll(MongoCollection<Document> collection){ 92 /** 93 * 1. 获取迭代器FindIterable<Document> 94 * 2. 获取游标MongoCursor<Document> 95 * 3. 通过游标遍历检索出的文档集合 96 * */ 97 FindIterable<Document> findIterable = collection.find(); 98 MongoCursor<Document> mongoCursor = findIterable.iterator(); 99 while(mongoCursor.hasNext()){ 100 Document document = mongoCursor.next(); 101 System.out.println("MongoDB数据:"+document); 102 System.out.println("本地时间:"+new SimpleDateFormat().format(document.getObjectId("_id").getDate())); 103 } 104 } 105 106 /** 107 * 更新 所有文档【表内 数据】com.mongodb.client.MongoCollection<Document>.updateMany() 108 */ 109 public void update(MongoCollection<Document> collection){ 110 111 collection.updateMany(Filters.eq("age", 26), new Document("$set",new Document("age",100))); 112 113 FindIterable<Document> findIterable = collection.find(); 114 MongoCursor<Document> cursor = findIterable.iterator(); 115 while (cursor.hasNext()) { 116 System.out.println("更新后的MongoDB数据:"+cursor.next()); 117 } 118 } 119 120 121 /** 122 * 删除 文档 com.mongodb.client.MongoCollection<Document>.deleteMany()/deleteOne() 123 */ 124 public void delete(MongoCollection<Document> collection){ 125 // 删除符合条件的 第一个文档 126 collection.findOneAndDelete(Filters.eq("age", 26)); 127 //删除符合条件的 所有文档 128 collection.deleteMany(Filters.gte("age", 20)); 129 130 FindIterable<Document> findIterable = collection.find(); 131 MongoCursor<Document> cursor = findIterable.iterator(); 132 while(cursor.hasNext()){ 133 System.out.println("删除后的MongoDB数据:"+cursor.next()); 134 } 135 } 136 137 138 139 140 141 }