MongoDB数据库连接

时间:2025-04-10 07:36:49

1.添加配置文件

#db params

#server=Chinese
server=English

#test数据库
DBUrl=***
DBPort=***
DBName=gameserver

#简体服务器阿里云数据库
#DBUrl=dds-***************.
#DBPort=****
#DefaultDB=admin
#DBName=***
#username=***
#password=***

#Collection
PVPRecordCollectionName=pvp_record
PVPDataCollectionName=pvp_data
#最大连接数
connectionsPerHost=100
#最大等待时间
maxWaitTime=300000
#连接超时时间
socketTimeout=100000
#连接池最长生命时间
maxConnectionLifeTime=150000
#连接超时时间
connectTimeout=25000
#IP地址查询接口
#ipSearchUrl=/iplookup/?format=json&ip=
ipSearchUrl=/service/?ip=
#ipSearchUrl=/json/



2.配置MongoDB数据库连接类

package util;

import ;
import ;
import ;

import ;

import ;
import ;
import ;
import ;
import ;
import ;
import ;

public class MongoDBUtil {
	private static MongoClient mongoClient;
	private static MongoDatabase mongoDB;
	
	// 读取配置文件
	private static Properties p = new Properties();	
	
	private final static MongoDBUtil instance = new MongoDBUtil();
	
	public static MongoDBUtil getInstance(){
		return instance;
	}
	
	public static String getSystemParamKeyValue(String key){
		return (key);
	}
	
	public MongoDatabase getMongoDataBase(){
		return mongoDB;
	}
	
	//离线消息集合
	public MongoCollection<Document> getOffCollection(){
		return (("OffCollectionName"));
	}
	//PVP单条记录集合
	public MongoCollection<Document> getPVPRecordCollection(){
		return (("PVPRecordCollectionName"));
	}
	//PVP计数集合
	public MongoCollection<Document> getPVPDataCollection(){
		return (("PVPDataCollectionName"));
	}
	
	public MongoDBUtil(){	
		//String myFilePath = ("/").getPath() + "";
		try {
			(().getResourceAsStream(""));
			String DBUrl = ("DBUrl");
			String DBName = ("DBName");
			int DBPort = (("DBPort"));
			
			 buide = new ();
			((("connectionsPerHost")));// 与目标数据库可以建立的最大链接数
			((("connectTimeout")));// 与数据库建立链接的超时时间
			((("maxWaitTime")));// 一个线程成功获取到一个可用数据库之前的最大等待时间
			(100);
			(0);
			((("maxConnectionLifeTime")));
			((("socketTimeout")));
			(true);
			MongoClientOptions myOptions = ();
			
//			MongoClientOptions myOptions = ()
//					.connectionsPerHost((("connectionsPerHost")))
//					.maxWaitTime((("maxWaitTime")))
//					.socketTimeout((("socketTimeout")))
//					.maxConnectionLifeTime((("maxConnectionLifeTime")))
//					.connectTimeout((("connectTimeout"))).build();
			
			(("server"));
			if(("server").equals("Chinese")){
				
				mongoClient = createMongoDBClient(DBUrl, DBPort);
//				mongoClient = createMongoDBClientWithURI(DBUrl, DBPort);
				
			}else{
				ServerAddress serverAddress = new ServerAddress(DBUrl, DBPort);
				mongoClient = new MongoClient(serverAddress, myOptions);
				
			}
			
			("Connect to mongo successfully");
			   
			mongoDB = (DBName);
			("Connect to mongoDB successfully : "+());
		} catch (Exception e) {
		   ();
		   ("连接超时!");
		  //手动close释放连接
		   ();
		}
	}
	
	/*
	 * 阿里云,第一种办法
	 */
	public MongoClient createMongoDBClient(String DBUrl, int DBPort){
		ServerAddress serverAddress = new ServerAddress(DBUrl, DBPort);  
        List<ServerAddress> addrs = new ArrayList<ServerAddress>();  
        (serverAddress);  
          
        String username = ("username");
		String password = ("password");
		String defaultDB = ("DefaultDB");
        //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码  
        MongoCredential credential = MongoCredential.createScramSha1Credential(username, defaultDB, ());
        List<MongoCredential> credentials = new ArrayList<MongoCredential>();  
        (credential);  
        
        return new MongoClient(addrs,credentials);  
	}
	
	/*
	 * 阿里云,第二种办法
	 */
	public MongoClient createMongoDBClientWithURI(String DBUrl, int DBPort) {
		ServerAddress serverAddress = new ServerAddress(DBUrl, DBPort);  
		String username = ("username");
		String password = ("password");
		String defaultDB = ("DefaultDB");
        //另一种通过URI初始化
        //mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
		String url = "mongodb://" + username + ":" + password + "@" + serverAddress + "/" + defaultDB;
		(url);
        MongoClientURI connectionString = new MongoClientURI(url);
        return new MongoClient(connectionString);
    }
	
}

注意:阿里云数据库连接跟一般数据库连接有所不同