首頁 資料庫 mysql教程 Mongodb底层java驱动框架工具类使用

Mongodb底层java驱动框架工具类使用

Jun 07, 2016 pm 04:12 PM
java mongodb 使用 工具 底層 框架 驅動

使用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<Mongo> mongos = new ThreadLocal<Mongo>();
	
	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<DBObject> 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<DBObject> 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<DBObject> findAll(String collection) {

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

	/**
	 * 按顺序查找集合所有对象
	 * 
	 * @param collection
	 *            数据集
	 * @param orderBy
	 *            排序
	 */
	public static List<DBObject> 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<DBObject> findLess(String collection, DBObject q, DBObject fileds, int pageNo,
			int perPageCount) {

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


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
幣安廣場怎麼樣可靠嗎 幣安廣場怎麼樣可靠嗎 May 07, 2025 pm 07:18 PM

幣安廣場(Binance Square)是幣安交易所提供的一個社交媒體平台,旨在為用戶提供一個交流和分享加密貨幣相關信息的空間。本文將詳細探討幣安廣場的功能、可靠性以及用戶體驗,幫助你更好地了解這個平台。

歐意OKX6.118.0版本最新下載教程 歐意OKX6.118.0版本最新下載教程 May 07, 2025 pm 06:51 PM

歐意OKX6.118.0版本最新下載教程:1、點擊文章中快捷鏈接;2、點擊下載即可(如果是網頁用戶請先進行信息註冊)。最新安卓版本v6.118.0優化了部分功能和體驗,讓交易更容易。立即更新App,感受更加極致的交易體驗。

2025幣安交易所最新入口地址 2025幣安交易所最新入口地址 May 07, 2025 pm 07:00 PM

幣安(Binance)作為全球領先的加密貨幣交易所,始終致力於為用戶提供安全、便捷的交易體驗。隨著時間的推移,幣安不斷優化其平台功能和用戶界面,以滿足用戶不斷變化的需求。 2025年,幣安推出了新的登錄入口,旨在進一步提升用戶體驗。

2025幣安Binance交易所最新登錄入口 2025幣安Binance交易所最新登錄入口 May 07, 2025 pm 07:03 PM

幣安(Binance)作為全球領先的加密貨幣交易所,始終致力於為用戶提供安全、便捷的交易體驗。隨著時間的推移,幣安不斷優化其平台功能和用戶界面,以滿足用戶不斷變化的需求。 2025年,幣安推出了新的登錄入口,旨在進一步提升用戶體驗。

MongoDB與Oracle:探索NOSQL和關係方法 MongoDB與Oracle:探索NOSQL和關係方法 May 07, 2025 am 12:02 AM

在不同的應用場景下,選擇MongoDB還是Oracle取決於具體需求:1)如果需要處理大量非結構化數據且對數據一致性要求不高,選擇MongoDB;2)如果需要嚴格的數據一致性和復雜查詢,選擇Oracle。

2025幣安在線網頁地址 2025幣安在線網頁地址 May 07, 2025 pm 06:54 PM

幣安(Binance)作為全球領先的加密貨幣交易所,始終致力於為用戶提供安全、便捷的交易體驗。隨著時間的推移,幣安不斷優化其平台功能和用戶界面,以滿足用戶不斷變化的需求。 2025年,幣安推出了新的登錄入口,旨在進一步提升用戶體驗。

歐意OKX5.1最新版本下載 歐意OKX5.1最新版本下載 May 07, 2025 pm 06:48 PM

歐意OKX6.118.0版本最新下載教程:1、點擊文章中快捷鏈接;2、點擊下載即可(如果是網頁用戶請先進行信息註冊)。最新安卓版本v6.118.0優化了部分功能和體驗,讓交易更容易。立即更新App,感受更加極致的交易體驗。

歐意OKX6.118.0版本下載入口 歐意OKX6.118.0版本下載入口 May 07, 2025 pm 06:39 PM

歐意OKX6.118.0版本最新下載教程:1、點擊文章中快捷鏈接;2、點擊下載即可(如果是網頁用戶請先進行信息註冊)。最新安卓版本v6.118.0優化了部分功能和體驗,讓交易更容易。立即更新App,感受更加極致的交易體驗。

See all articles