使用MongoDB连接池MongoOptions来进行连接 以及相关方法的调用
//获得驱动地址(这里的驱动 写入了配置文件中)
String serverAddressStr = Configure.getInstance().getProperty("SERVER_ADDRESSES");
log.debug("serverAddressStr:" + serverAddressStr); 如果需要连接的MongoDB为多个,则用逗号分隔开,加入集合中以便后续使用
String[] serverAddressArray = serverAddressStr.split(",");
for (String address : serverAddressArray) {
log.debug("address:" + address);
addresslist.add(new ServerAddress(address));
}
//声明MongoOptions对象
MongoOptions options = new MongoOptions();
//autoConnectRetry方法用于在连接失败后是否重新连接,可写成配置项
String autoConnectRetry = Configure.getInstance().getProperty("AUTO_CONNECT_RETRY");
if (StringUtils.isNotEmpty(autoConnectRetry)) {
options.autoConnectRetry = Boolean.valueOf(autoConnectRetry);
}
//设置连接池的大小也可写成配置项 方便以后调整 使用的是autoConnectRetry方法
String connectionsPerHost = Configure.getInstance().getProperty("CONNECTIONS_PER_HOST");
if (StringUtils.isNotEmpty(connectionsPerHost)) {
options.connectionsPerHost = Integer.valueOf(connectionsPerHost);
}
//线程队列
String threadsAllowedToBlockForConnectionMultiplier = Configure.getInstance().getProperty("THREAD_ALLOWED");
log.debug("[THREAD_ALLOWED]:" + threadsAllowedToBlockForConnectionMultiplier);
if (StringUtils.isNotEmpty(threadsAllowedToBlockForConnectionMultiplier)) {
options.threadsAllowedToBlockForConnectionMultiplier = Integer.valueOf(threadsAllowedToBlockForConnectionMultiplier);
}
//最大阻塞时间
String connectTimeout = Configure.getInstance().getProperty("CONNECT_TIME_OUT");
log.debug("[CONNECT_TIME_OUT]:" + connectTimeout);
if (StringUtils.isNotEmpty(connectTimeout)) {
options.connectTimeout = Integer.valueOf(connectTimeout);
}
// 被阻塞线程从连接池获取连接的最长等待时间(ms)
// options.maxWaitTime = 12000;
String maxWaitTime = Configure.getInstance().getProperty("MAX_WAIT_TIME");
log.debug("[MAX_WAIT_TIME]:" + maxWaitTime);
if (StringUtils.isNotEmpty(maxWaitTime)) {
options.maxWaitTime = Integer.valueOf(maxWaitTime);
}
// 是否答应驱动从次要节点读取数据,默认为false
String slaveOk = Configure.getInstance().getProperty("SlAVE_OK");
log.debug("[SlAVE_OK]:" + slaveOk);
if (StringUtils.isNotEmpty(slaveOk)) {
options.slaveOk = Boolean.valueOf(slaveOk);
}
从某个中按照字段查找相应数据 并放入集合中
public DBObject findOne(String collectionName,String keystr,String value){
DB db = this.getDB();
DBCollection collection = db.getCollection(collectionName);
DBObject dbObject;
try {
dbObject = collection.findOne(new BasicDBObject(keystr, value));
log.debug("dbObject1:" + dbObject);
if (dbObject == null) {
db = this.switchCluster().getDB();
collection = db.getCollection(collectionName);
dbObject = collection.findOne(new BasicDBObject(keystr, value));
log.debug("dbObject1-2:" + dbObject);
}
} catch (MongoException e) {
db = this.switchCluster().getDB();
collection = db.getCollection(collectionName);
dbObject = collection.findOne(new BasicDBObject(keystr, value));
log.debug("dbObject2:" + dbObject);
}
return dbObject;
}
前台通过DBCollection 根据名称获取相应的value 然后加入list中~
public List<DBObject> getValue(List<String> columnNames) { db = MongoDB.getInstance().getDB();
DBCollection collection = db.getCollection("labels");
List<DBObject> list = new ArrayList<DBObject>();
BasicDBList dbList = new BasicDBList();
dbList.addAll(columnNames);
DBObject inObj = new BasicDBObject("$in", dbList);
DBCursor cursor = collection.find(new BasicDBObject("column_name", inObj));
DBObject dbObj = null;
while (cursor.hasNext()) {
dbObj = cursor.next();
list.add(dbObj);
}
return list;