MongoDB项目中常用方法

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 使用MongoDB连接池MongoOptions来进行连接 以及相关方法的调用 //获得驱动地址(这里的驱动 写入了配置文件中) String serverAddressStr = Configure.

使用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;                        
目录
相关文章
|
存储 NoSQL 测试技术
在MongoDB建模1对N关系的基本方法
了解更多阿里云MongoDB的介绍
1819 2
在MongoDB建模1对N关系的基本方法
|
NoSQL 关系型数据库 MySQL
深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析
在 MongoDB 中,我们使用 find() 和 find_one() 方法来在集合中查找数据,就像在MySQL数据库中使用 SELECT 语句来在表中查找数据一样
302 1
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
NoSQL MongoDB 数据库
MongoDB 分页神器:limit() 和 skip() 方法详解
MongoDB 分页神器:limit() 和 skip() 方法详解
317 1
|
NoSQL Java MongoDB
MongoDB Limit 与 Skip 方法
10月更文挑战第16天
180 3
|
NoSQL Ubuntu MongoDB
在Ubuntu 16.04上安装和保护MongoDB的方法
在Ubuntu 16.04上安装和保护MongoDB的方法
213 1
|
存储 JSON NoSQL
NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用
NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用
|
NoSQL 安全 MongoDB
精准数据清理:掌握 MongoDB 删除集合的方法与最佳实践
精准数据清理:掌握 MongoDB 删除集合的方法与最佳实践
712 0
|
人工智能 NoSQL 安全
MongoDB 推出新项目,助力企业构建生成式 AI 现代应用程序
依托 MAAP,我们能够与合作伙伴共同助力客户利用生成式 AI 技术来提高生产率,颠覆客户交互方式,推动行业进步
3381 0

推荐镜像

更多