package org.sunstar.util;
import java.net.UnknownHostException;
import java.util.List;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.ServerAddress;
/**
* MongodbUtil
*
* @author chenlongquan
*
*/
public class MongodbUtil {
private final static ThreadLocal<MongoClient> mongoClientes = new ThreadLocal<MongoClient>();
private static final Integer SOCKET_TIMEOUT = 300000;
private static final Integer CONNECTIONS_PER_HOST = 500;
private static final Integer threadsAllowedToBlockForConnectionMultiplier = 500;
public static DB getdb() {
try {
return getMongos().getDB(new PropertiesConfiguration("mongo").getString("db"));
} catch (ConfigurationException e) {
e.printStackTrace();
return null;
}
}
public static MongoClient getMongos() {
MongoClient mongoClient = mongoClientes.get();
if (mongoClient == null) {
try {
mongoClient = new MongoClient(new ServerAddress(new PropertiesConfiguration("mongo").getString("host"),
new PropertiesConfiguration("mongo").getInt("port")), new MongoClientOptions.Builder()
.socketTimeout(SOCKET_TIMEOUT).connectionsPerHost(CONNECTIONS_PER_HOST)
.threadsAllowedToBlockForConnectionMultiplier(threadsAllowedToBlockForConnectionMultiplier)
.socketKeepAlive(true).build());
} catch (UnknownHostException | ConfigurationException e) {
e.printStackTrace();
}
mongoClientes.set(mongoClient);
}
return mongoClient;
}
public static void close() {
MongoClient mongoClient = mongoClientes.get();
if (mongoClient != null) {
mongoClient.close();
mongoClientes.remove();
}
}
/**
* 获取集合(表)
*
* @param collection
*/
public static DBCollection getCollection(String collection) {
return getdb().getCollection(collection);
}
/**
* 插入
*
* @param collection
* @param o 插入
*
*/
public static void insert(String collection, DBObject o) {
getCollection(collection).insert(o);
}
/**
* 批量插入
*
* @param collection
* @param list
* 插入的列表
*/
public static void insertBatch(String collection, List<DBObject> list) {
if ((list == null) || list.isEmpty()) {
return;
}
getCollection(collection).insert(list);
}
/**
* 删除
*
* @param collection
* @param q
* 查询条件
*/
public static void delete(String collection, DBObject q) {
getCollection(collection).remove(q);
}
/**
* 批量删除
*
* @param collection
* @param list
* 删除条件列表
*/
public static 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();
}
}
分享到:
相关推荐
Java连接MongoDB工具类示例主要展示了如何在Java应用程序中与MongoDB数据库进行交互,MongoDB是一个NoSQL数据库,以其非关系型、分布式、高性能和灵活性而受到开发者的青睐。在Java中,我们通常使用MongoDB Java驱动...
在Kotlin中,创建一个MongoDB连接工具类可能包括以下步骤: 1. 引入MongoDB Java驱动程序或KMongo库。 2. 初始化MongoClient实例,指定服务器地址和端口。 3. 选择要操作的数据库。 4. 提供用于操作集合的方法,如...
mongoDB工具类,实际项目开发中自己编写的,经测试无bug,放心使用
经常对MongoDB进行一些常用操作,为了方便起见将这些常用操作合并到一个工具类中,方便自己开发使用。 没用Spring Data、Morphia等框架是为了减少学习、维护成本,另外自己直接JDBC方式的话可以更方便的控制操作...
使用`MongoClient`类创建一个到MongoDB服务器的连接。例如,连接到本地的MongoDB实例: ```csharp var client = new MongoClient("mongodb://localhost:27017"); var database = client.GetDatabase("test_...
本文将详细讲解如何使用Kotlin语言编写MongoDB连接工具类,以便在不依赖配置文件的情况下实现数据库的连接和操作。 首先,我们来看`MongoDBUtil.kt`这个文件,它很可能是用来封装MongoDB连接逻辑的工具类。在Kotlin...
2. MongoUtil.java:这是一个通用的MongoDB工具类,很可能提供了对MongoDB数据库进行连接、断开、查询、更新、删除等操作的静态方法。使用这样的工具类可以简化代码,提高代码复用性,并且使得代码更加模块化。 3. ...
在生产环境中,推荐使用systemd或其它服务管理工具进行配置。 启动MongoDB后,可以通过交互式Shell `mongo` 进行数据库操作: ```bash ./mongo ``` 现在你已进入了MongoDB的shell,可以创建数据库、集合,插入、...
java操作mongodb的工具类,增删查改方法
mongodb版本号3.2,需手动开启http服务,启动时使用命令 ./mongod --httpinterface 新增 修改 删除 查询 排序 分页 可查看: https://blog.csdn.net/m0_37132783/article/details/96992439
MongoChef,又名3T Data Studio,是MongoDB的可视化管理工具,由3T Software Labs开发。它提供了一个直观的用户界面,帮助开发者和数据库管理员更方便地与MongoDB数据库交互。MongoChef支持多种功能,包括连接到...
同时,可以使用`mongodump`和`mongorestore`工具进行数据备份和恢复,`mongotop`和`mongostat`监控数据库性能。 总的来说,MongoDB在Linux上的部署涉及下载、安装、配置、启动和管理等多个环节,理解这些步骤和相关...
通过以上介绍,我们了解了 MongoDB 的基本概念及其在 Windows 平台上的安装与配置过程,同时掌握了如何使用 MongoDB 的命令行工具进行简单的数据库操作。MongoDB 作为一种现代的 NoSQL 数据库,提供了灵活的数据模型...
MongoDB-CSharp ============== This is a community supported release of a driver to connect to MongoDB using .Net.
springmvc与mongoDB集成所需jar包 包括spring-data-mongodb-1.7.0.jar、spring-data-commons-1.10.0.RELEASE.jar、spring-data-commons-core-1.4.1.RELEASE.jar、mongo-java-driver-3.0.1.jar 对应支持的mongoDB版本...
"C#MongoDb操作工具类"是将C#与MongoDB结合,用于简化数据库操作的一组自定义类。通过这样的工具类,开发者可以更加高效、便捷地进行数据的存取、查询、更新和删除等操作。 在C#中,我们可以利用MongoDB的官方驱动...
`MongoDB.Driver.dll` 提供了与 MongoDB 服务器交互的类和接口,例如 `MongoClient` 用于建立连接,`IMongoDatabase` 和 `IMongoCollection` 分别代表数据库和集合,以及用于执行 CRUD(创建、读取、更新、删除)...
MongoDB增删改查工具类,根据一个doc,来检索,当doc是空的时候检索全部 检索全部并返回迭代器 便利迭代器FindIterable /** * Dao 层接口 * */ public interface MongoDao { /** * Get Data BY ID * * @...
完全面向对象的mongo封装,maven工程源码,可直接install导出jar包引用,支持基本的增删改查和分页等,使用反射对javaBean实体进行映射,所有方法参数只需要传javaBean就行了,支持带密码连接,即拿即用,无需修改。