根据 使用 mongodb,总结了一些简单的操作方法。希望帮助大家。
1.连接 mongodb://根据用户名,密码进行连接 mongodb 数据库
public class MongoManager{
private static MongoDatabase mongoDatabase = null;
private final static Logger LOGGER = LoggerFactory.getLogger(MongoManager.class);
private MongoManager(){}
/**
* 获取数据库链接
* @return Connection
*/
public static MongoDatabase getMongoDataBase(){
if (mongoDatabase != null) {
return mongoDatabase; //如果已经有连接,直接返回,不重新连接!
}
try {
InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("mongo.properties"); //通过配置文件,设置mongodb 连接的参数。获取当前线程的配置文件!!!
Properties properties = new Properties();
properties.load(inStream);
String host = properties.getProperty("mongo.host");
int port = Integer.valueOf(properties.getProperty("mongo.port"));
String userName = properties.getProperty("mongo.username");
char[] password = properties.getProperty("mongo.password").toCharArray();
String database = properties.getProperty("mongo.database");
//连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress(host, port);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential(userName, database, password);
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//
MongoClientOptions.Builder build = new MongoClientOptions.Builder();
//与目标数据库能够建立的最大connection数量为50
build.connectionsPerHost(50);
//如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
build.threadsAllowedToBlockForConnectionMultiplier(50);
/*
* 一个线程访问数据库的时候,在成功获取到一个可用数据库连接之前的最长等待时间为2分钟
* 这里比较危险,如果超过maxWaitTime都没有获取到这个连接的话,该线程就会抛出Exception
* 故这里设置的maxWaitTime应该足够大,以免由于排队线程过多造成的数据库访问失败
*/
build.maxWaitTime(1000*60*2);
build.connectTimeout(1000*60*1); //与数据库建立连接的timeout设置为1分钟
MongoClientOptions mongoClientOptions = build.build();
//通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(addrs,credentials,mongoClientOptions);
//连接到数据库
mongoDatabase = mongoClient.getDatabase(database);
Syste