ホームページ データベース mysql チュートリアル Mongodb底层java驱动框架工具类使用

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

Jun 07, 2016 pm 04:12 PM
java mongodb 使用 道具 1階 フレーム ドライブ

使用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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPフレームワークLaravelとYiiの違いは何ですか PHPフレームワークLaravelとYiiの違いは何ですか Apr 30, 2025 pm 02:24 PM

LaravelとYiiの主な違いは、デザインの概念、機能的特性、使用シナリオです。 1.Laravelは、開発のシンプルさと喜びに焦点を当てており、迅速な開発や初心者に適したEloquentormやArtisan Toolsなどの豊富な機能を提供します。 2.YIIはパフォーマンスと効率を強調し、高負荷アプリケーションに適しており、効率的なActiverCordおよびキャッシュシステムを提供しますが、急な学習曲線があります。

デジタル通貨アプリはどのようなソフトウェアですか?世界のデジタル通貨向けのトップ10アプリ デジタル通貨アプリはどのようなソフトウェアですか?世界のデジタル通貨向けのトップ10アプリ Apr 30, 2025 pm 07:06 PM

デジタル通貨の普及と開発により、ますます多くの人々がデジタル通貨アプリに注意を払い、使用し始めています。これらのアプリケーションは、デジタル資産を管理および取引するための便利な方法をユーザーに提供します。では、デジタル通貨アプリはどのようなソフトウェアですか?詳細な理解を持ち、世界のトップ10のデジタル通貨アプリの在庫を取得しましょう。

定量的交換ランキング2025デジタル通貨のトップ10の推奨事項定量取引アプリ 定量的交換ランキング2025デジタル通貨のトップ10の推奨事項定量取引アプリ Apr 30, 2025 pm 07:24 PM

交換に組み込まれた量子化ツールには、1。Binance:Binance先物の定量的モジュール、低い取り扱い手数料を提供し、AIアシストトランザクションをサポートします。 2。OKX(OUYI):マルチアカウント管理とインテリジェントな注文ルーティングをサポートし、制度レベルのリスク制御を提供します。独立した定量的戦略プラットフォームには、3。3Commas:ドラッグアンドドロップ戦略ジェネレーター、マルチプラットフォームヘッジアービトラージに適しています。 4。Quadency:カスタマイズされたリスクしきい値をサポートするプロフェッショナルレベルのアルゴリズム戦略ライブラリ。 5。Pionex:組み込み16のプリセット戦略、低い取引手数料。垂直ドメインツールには、6。cryptohopper:クラウドベースの定量的プラットフォーム、150の技術指標をサポートします。 7。BITSGAP:

Laravelログとエラー監視:SentryとBugsnagの統合 Laravelログとエラー監視:SentryとBugsnagの統合 Apr 30, 2025 pm 02:39 PM

SentryとBugsnagをLaravelに統合すると、アプリケーションの安定性とパフォーマンスが向上する可能性があります。 1. Composer.jsonにSentrysdkを追加します。 2. config/app.phpにSentryサービスプロバイダーを追加します。 3。.envファイルでsentrydsnを構成します。 4. app \ exceptions \ handler.phpにセントリーエラーレポートを追加します。 5. Sentryを使用して例外をキャッチおよび報告し、追加のコンテキスト情報を追加します。 6. app \ exceptions \ handler.phpにbugsnagエラーレポートを追加します。 7. bugsnag監視を使用します

EaseProtocol.comは、ISO 20022メッセージ標準をブロックチェーンスマートコントラクトとして直接実装しています EaseProtocol.comは、ISO 20022メッセージ標準をブロックチェーンスマートコントラクトとして直接実装しています Apr 30, 2025 pm 05:06 PM

この画期的な開発により、金融機関は、グローバルに認識されているISO20022標準を活用して、さまざまなブロックチェーンエコシステム全体の銀行プロセスを自動化できます。簡単なプロトコルは、使いやすい方法を通じて広範な採用を促進するように設計されたエンタープライズレベルのブロックチェーンプラットフォームです。本日、ISO20022メッセージング標準を正常に統合し、ブロックチェーンスマートコントラクトに直接組み込んだことを発表しました。この開発により、金融機関は、Swiftメッセージングシステムを置き換えているグローバルに認識されているISO20022標準を使用して、さまざまなブロックチェーンエコシステムの銀行プロセスを簡単に自動化できます。これらの機能は、「easetestnet」でまもなく試されます。 easeprotocolarchitectdou

デジタル通貨アプリはフォーマルですか?世界のトップ10フォーマルな仮想通貨取引アプリ デジタル通貨アプリはフォーマルですか?世界のトップ10フォーマルな仮想通貨取引アプリ Apr 30, 2025 pm 07:09 PM

推奨される暗号通貨取引プラットフォームには、次のものが含まれます。1。Binance:世界最大の取引量は、1,400通貨、FCA、MAS認定をサポートしています。 2。OKX:強力な技術的強さは、香港証券規制委員会によって承認された400通貨をサポートしています。 3。Coinbase:米国最大のコンプライアンスプラットフォーム、初心者、SEC、Fincenの監督に適しています。 4。Kraken:ベテランのヨーロッパブランドであるISO 27001認定が、米国MSBおよび英国FCAライセンスを保有しています。 5。GATE.IO:最も完全な通貨(800)、低い取引手数料、および複数の国からライセンスを取得しました。 6. Huobi Global:さまざまなサービスを提供し、日本のFSAおよび香港TCSPライセンスを保持する古いプラットフォーム。 7。Kucoin

Laravelライブチャットアプリケーション:WebSocketとPusher Laravelライブチャットアプリケーション:WebSocketとPusher Apr 30, 2025 pm 02:33 PM

Laravelでライブチャットアプリケーションを構築するには、WebSocketとPusherを使用する必要があります。特定の手順には次のものが含まれます。1).envファイルでプッシャー情報を構成します。 2)broadcasting.phpファイルの放送ドライバーをプッシャーに設定します。 3)Pusherチャンネルを購読し、Laravelechoを使用してイベントを聴きます。 4)Pusher APIを介してメッセージを送信します。 5)プライベートチャネルとユーザー認証を実装します。 6)パフォーマンスの最適化とデバッグを実行します。

2025年のトップ10の正式な仮想通貨交換アプリのランキング(デジタル通貨取引プラットフォームアプリリスト) 2025年のトップ10の正式な仮想通貨交換アプリのランキング(デジタル通貨取引プラットフォームアプリリスト) Apr 30, 2025 pm 05:39 PM

2025年のトップ10の正式な仮想通貨交換アプリのランキング:1。OKX、2。BINANCE、3。HUOBI、4。COINBASE、5。KRAKEN、6。BITFINEX、7。KUCOIN、8。GEMINI、9。BITSTAMP、10。コンプライアンス、プライバシー保護、活用された取引、国際化の程度、顧客サービスなど。

See all articles