视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Mongodb底层java驱动框架工具类使用
2020-11-09 14:11:07 责编:小采
文档


使用MongoDB需要对文档结构进行合理的设计,以满足某些特定需求。比如随机选取文档,使用skip跳过随机个文档就没有在文档中加个随机键, 然后使用某个随机数对文档进行查询高效,随机键还能添加索引,效率更高。合理选择,合理设计。 import java.net.Unknown

使用MongoDB需要对文档结构进行合理的设计,以满足某些特定需求。比如随机选取文档,使用skip跳过随机个文档就没有在文档中加个随机键,

然后使用某个随机数对文档进行查询高效,随机键还能添加索引,效率更高。合理选择,合理设计。

import java.net.UnknownHostException;
import java.util.Date;
import java.util.List;

import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.nerd.mongo.config.ConfigFactory;
/**
 * MONGOS
 * @author chenlongquan
 *
 */
public class MongoUtil {
	
	private final static ThreadLocal mongos = new ThreadLocal();
	
	public static DB getdb(){
	return getMongos().getDB(ConfigFactory.getMongoConfig().getDb());
	}
	
	public static Mongo getMongos() {
	Mongo mongo = mongos.get();
	if (mongo == null) {
	try {
	mongo = new Mongo(ConfigFactory.getMongoConfig().getIp(),ConfigFactory.getMongoConfig().getPort());
	mongos.set(mongo);
	} catch (UnknownHostException e) {
	e.printStackTrace();
	} catch (MongoException e) {
	e.printStackTrace();
	}
	}
	return mongo;
	}
	
	public static void close(){
	Mongo mongo = mongos.get();
	if(mongo!=null){
	mongo.close();
	mongos.remove();
	}
	}
	
	
	/**
	 * 获取集合(表)
	 * 
	 * @param collection
	 */
	public static DBCollection getCollection(String collection) {

	return getdb().getCollection(collection);
	}
......................................................
下面我们就可以在这上面的基础上对mongodb进行基本的crud操作

例如:

/**
	 * 插入
	 * 
	 * @param collection
	 * @param o 插入
	 * 
	 */
	public static void insert(String collection, DBObject o) {
	
	getCollection(collection).insert(o);
	}

	/**
	 * 批量插入
	 * 
	 * @param collection
	 * @param list
	 * 插入的列表
	 */
	public void insertBatch(String collection, List list) {

	if (list == null || list.isEmpty()) {
	return;
	}

	getCollection(collection).insert(list);

	}

测试用例:

insert("user1",
	new BasicDBObject().append("name", "admin3").append("type", "2").append("score", 70)
	 .append("level", 2).append("inputTime", new Date().getTime()));

工具类使用:

/**
	 * 删除
	 * 
	 * @param collection
	 * @param q
	 * 查询条件
	 */
	public void delete(String collection, DBObject q) {

	getCollection(collection).remove(q);
	}

	/**
	 * 批量删除
	 * 
	 * @param collection
	 * @param list
	 * 删除条件列表
	 */
	public void deleteBatch(String collection, List list) {

	if (list == null || list.isEmpty()) {
	return;
	}

	for (int i = 0; i < list.size(); i++) {
	getCollection(collection).remove(list.get(i));
	}
	}

	
	/**
	 * 更新
	 * 
	 * @param collection
	 * @param q
	 * 查询条件
	 * @param setFields
	 * 更新对象
	 */
	public static void update(String collection, DBObject q, DBObject setFields) {

	getCollection(collection).updateMulti(q,
	new BasicDBObject("$set", setFields));
	}

	/**
	 * 查找集合所有对象
	 * 
	 * @param collection
	 */
	public static List findAll(String collection) {

	return getCollection(collection).find().toArray();
	}

	/**
	 * 按顺序查找集合所有对象
	 * 
	 * @param collection
	 * 数据集
	 * @param orderBy
	 * 排序
	 */
	public static List findAll(String collection, DBObject orderBy) {

	return getCollection(collection).find().sort(orderBy)
	.toArray();
	}

	/**
	 * 查找(返回一个对象)
	 * 
	 * @param collection
	 * @param q
	 * 查询条件
	 */
	public static DBObject findOne(String collection, DBObject q) {

	return getCollection(collection).findOne(q);
	}

	/**
	 * 查找(返回一个对象)
	 * 
	 * @param collection
	 * @param q
	 * 查询条件
	 * @param fileds
	 * 返回字段
	 */
	public static DBObject findOne(String collection, DBObject q, DBObject fileds) {

	return getCollection(collection).findOne(q, fileds);
	}

	

	/**
	 * 分页查找集合对象,返回特定字段
	 * 
	 * @param collection
	 * @param q
	 * 查询条件
	 * @param fileds
	 * 返回字段
	 * @pageNo 第n页
	 * @perPageCount 每页记录数
	 */
	public static List findLess(String collection, DBObject q, DBObject fileds, int pageNo,
	int perPageCount) {

	return getCollection(collection).find(q, fileds)
	.skip((pageNo - 1) * perPageCount).limit(perPageCount)
	.toArray();
	}


下载本文
显示全文
专题