1.写pom加驱动依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.0</version>
</dependency>
2.建MongoManager类
package com.csii.mongodb;
import cn.hutool.json.JSONArray;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.ReadPreference;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import entities.DatabaseConnectionInfo;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
public class MongoManager {
private static MongoClient mongo;
/**
* @param
* @param userName
* @param pwd
* 实例化dbName一个DB
*/
public MongoManager( String userName, String pwd,DatabaseConnectionInfo databaseConnectionInfo ) {
if(databaseConnectionInfo.isAuthentication()){
if (userName == null || "".equals(userName)) {
throw new NumberFormatException("userName is null");
}
if (pwd == null || "".equals(pwd)) {
throw new NumberFormatException("pwd is null");
}
}
}
public MongoManager() {
}
/**
* 使用配置参数实例化
*/
/*public MongoManager() {
this(MongoConfig.getDbName(), MongoConfig.getUserName(), MongoConfig.getPwd());
}*/
/**
* @param tableName
* @return
* @Description: 获取表tableName的链接MongoCollection
*/
public MongoCollection<Document> getDBCollection(String tableName, MongoDatabase db) {
return db.getCollection(tableName);
}
/**
* @Date:2014-3-19
* @Author:lulei
* @Description: mongo连接池初始化
*/
public MongoClient init(DatabaseConnectionInfo databaseConnectionInfo) {
if (databaseConnectionInfo.getHostIp() == null || databaseConnectionInfo.getHostIp().length() == 0) {
throw new NumberFormatException("host is null");
}
if (databaseConnectionInfo.getPort() == null || databaseConnectionInfo.getPort().length() == 0) {
throw new NumberFormatException("port is null");
}
try {
//服务列表
List<ServerAddress> replicaSetSeeds = new ArrayList<ServerAddress>();
replicaSetSeeds.add(new ServerAddress(databaseConnectionInfo.getHostIp(), Integer.parseInt(databaseConnectionInfo.getPort())));
//连接池参数设置
MongoClientOptions clientOptions = new MongoClientOptions
.Builder().connectionsPerHost( databaseConnectionInfo.getConnectionsPerHost())
.threadsAllowedToBlockForConnectionMultiplier(databaseConnectionInfo.getThreadsAllowedToBlockForConnectionMultiplier()).maxWaitTime(2000).build();
mongo = new MongoClient(replicaSetSeeds,clientOptions);
//从服务器可读
mongo.setReadPreference(ReadPreference.secondary());
} catch (Exception e){
e.printStackTrace();
}
return mongo;
}
/**
* 使用配置参数实例化
*/
/* public MongoManager() {
this(mongoDBConfig.getDbName(), mongoDBConfig.getUserName(), mongoDBConfig.getPwd());
}*/
/**
* @Title: queryList
* @Description: TODO 查询出全部的 记录
* @param dbCollection
* @return: void
*/
public List<Document> queryList(MongoCollection dbCollection) {
JSONArray json = new JSONArray();
//检索所有文档
/**
* 1. 获取迭代器FindIterable<Document>
* 2. 获取游标MongoCursor<Document>
* 3. 通过游标遍历检索出的文档集合
* */
FindIterable<Document> findIterable = dbCollection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
List<Document> documentList = new ArrayList<Document>();
Document document =new Document();
try{
while(mongoCursor.hasNext()){
document=mongoCursor.next();
documentList.add(document);
}
}catch (Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
return documentList;
}
/* public static void main(String[] args) {
String[] host = {"115.182.90.220"};
int[] port = {31459};
mongoDBConfig.setHost(host);
mongoDBConfig.setPort(port);
mongoDBConfig.setUserName("csdn");
mongoDBConfig.setPwd("123456");
MongoManager mongoManager = new MongoManager();
// 查询该数据库所有的集合名
for(String name : mongo.getDatabaseNames()){
System.out.println(name);
}
String dtname = "";
// 查询该数据库所有的集合名
for(String name : mongo.getDatabaseNames()){
dtname += name+",";
}
System.out.println("dtname:"+dtname);
mongoDBConfig.setDbName("csii_dbus");
db = mongo.getDB(mongoDBConfig.getDbName());
DBCollection coll=mongoManager.getDBCollection("csii_dbus");
mongoManager.queryList(coll);
}*/
}
3.调用对应MongManager方法
@GetMapping("/mongodb/database/coll")
public CommonResult databaseColl(DatabaseConnectionInfo databaseConnectionInfo)
{
mongo= mongoManager.init(databaseConnectionInfo);
String dtname = "";
try{
if(mongo!=null){
if("database".equals(databaseConnectionInfo.getFlagType())){
for(String name : mongo.getDatabaseNames()){
dtname += name+",";
}
dtname.substring(0,dtname.length()-1);
}else if("coll".equals(databaseConnectionInfo.getFlagType())){
db = mongo.getDatabase(databaseConnectionInfo.getDbName());
// 查询该数据库所有的集合名
MongoCollection<Document> coll=mongoManager.getDBCollection(databaseConnectionInfo.getDbName(),db);
dtname=mongoManager.queryList(coll).toString();
}
}
}catch (Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}finally {
mongo.close();
}
if (dtname != null) {
return new CommonResult(200, "查询成功" + dtname);
} else {
return new CommonResult(444, "没有对应记录"+null);
}
}