JAVA连接MongoDB工具类
1、MongoDB驱动
<!--mongoDb驱动-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>
3、工具类
import com.mongodb.*;
import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId;
import java.text.SimpleDateFormat;
import java.util.*;
public class MongoDbUtils {
public static MongoClient getMongoDbClient(String url, int port) {
MongoClient mongoClient = null;
try {
mongoClient = new MongoClient(url, port);
} catch (Exception e) {
e.printStackTrace();
}
return mongoClient;
}
public static MongoDatabase getMongoDbConnection(String url, int port, String database) {
MongoDatabase mongoDb = null;
try {
MongoClient mongoClient = new MongoClient(url, port);
mongoDb = mongoClient.getDatabase(database);
} catch (Exception e) {
e.printStackTrace();
}
return mongoDb;
}
public static MongoClient getMongoDbAuthClient(String user, String password, String url, int port, String database) {
List<ServerAddress> adds = new ArrayList<>();
List<MongoCredential> credentials = new ArrayList<>();
MongoClient mongoClient = null;
try {
ServerAddress serverAddress = new ServerAddress(url, port);
adds.add(serverAddress);
MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(user, database, password.toCharArray());
credentials.add(mongoCredential);
mongoClient = new MongoClient(adds, credentials);
} catch (Exception e) {
e.printStackTrace();
}
return mongoClient;
}
public static void createCollection(MongoClient mongoClient, String dataBase, String collName) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(dataBase);
mongoDatabase.createCollection(collName);
}
public static MongoCollection<Document> getMongoCollection(MongoClient mongoClient, String dataBase, String collName) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(dataBase);
MongoCollection<Document> collection = mongoDatabase.getCollection(collName);
return collection;
}
public static List<String> getAllCollections(MongoClient mongoClient, String collName) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(collName);
MongoIterable<String> collections = mongoDatabase.listCollectionNames();
List<String> list = new ArrayList<String>();
for (String s : collections) {
list.add(s);
}
return list;
}
public static MongoIterable<String> getAllDBNames(MongoClient mongoClient) {
return mongoClient.listDatabaseNames();
}
public static void dropDB(MongoClient mongoClient, String database) {
mongoClient.getDatabase(database).drop();
}
public static String createIndex(MongoClient mongoClient, String dataBase, String collName, String field) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(dataBase);
MongoCollection<Document> collection = mongoDatabase.getCollection(collName);
return collection.createIndex(new BasicDBObject(field, 1));
}
public static void insertOne(MongoDatabase database, String collName, Document document) {
MongoCollection<Document> collection = database.getCollection(collName);
collection.insertOne(document);
}
public static void insertBatch(MongoDatabase database, String collName, List<Document> documentList) {
MongoCollection<Document> collection = database.getCollection(collName);
collection.insertMany(documentList);
}
public static String queryMaxColumn(MongoClient mongoClient, String mongoDbDb, String mongoDbTable, String checkColumn, String checkColumnFormat) {
String result = null;
MongoDatabase mongoDatabase = mongoClient.getDatabase(mongoDbDb);
MongoCollection<Document> poolCollection = mongoDatabase.getCollection(mongoDbTable);
SimpleDateFormat sdf = new SimpleDateFormat(checkColumnFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
FindIterable<Document> documents = poolCollection.find().sort(new Document().append(checkColumn, -1)).limit(1);
for (Document document : documents) {
result = sdf.format(document.getDate(checkColumn));
}
return result;
}
public static List<String> queryDataResultJson(MongoClient mongoClient, String database, String tableName, String queryColumn, String checkColumn, String checkColumnFormat, String startOffset, String endOffset) {
List<String> list = new ArrayList<>();
try {
MongoDatabase mongoDatabase = mongoClient.getDatabase(database);
MongoCollection<Document> poolCollection = mongoDatabase.getCollection(tableName);
SimpleDateFormat sdf = new SimpleDateFormat(checkColumnFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Bson queryWhere = Filters.and(Filters.gt(checkColumn, sdf.parse(startOffset)), Filters.lte(checkColumn, sdf.parse(endOffset)));
BasicDBObject queryFields = new BasicDBObject();
String[] fields = queryColumn.split(",", -1);
for (String field : fields) {
queryFields.put(field, true);
}
FindIterable<Document> documents = poolCollection.find(queryWhere).projection(queryFields);
for (Document document : documents) {
list.add(document.toJson());
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public static FindIterable<Document> findAll(MongoClient mongoClient,String database,String collName) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(database);
MongoCollection<Document> collection = mongoDatabase.getCollection(collName);
FindIterable<Document> documents = collection.find();
return documents;
}
public static Document findById(MongoClient mongoClient,String database,String collName, String id) {
ObjectId idObj = null;
try {
MongoDatabase mongoDatabase = mongoClient.getDatabase(database);
MongoCollection<Document> collection = mongoDatabase.getCollection(collName);
idObj = new ObjectId(id);
Document myDoc = collection.find(Filters.eq("_id", idObj)).first();
return myDoc;
} catch (Exception e) {
return null;
}
}
public static long getCount(MongoClient mongoClient, String database,String collName) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(database);
MongoCollection<Document> collection = mongoDatabase.getCollection(collName);
return collection.count();
}
public static MongoCursor<Document> findByPage(MongoClient mongoClient, String database,String collName, Bson filter, int pageNo, int pageSize) {
MongoDatabase mongoDatabase = mongoClient.getDatabase(database);
MongoCollection<Document> collection = mongoDatabase.getCollection(collName);
Bson orderBy = new BasicDBObject("_id", 1);
return collection.find(filter).sort(orderBy).skip((pageNo - 1) * pageSize).limit(pageSize).iterator();
}
public static int deleteById(MongoClient mongoClient, String database,String collName, String id) {
int count = 0;
ObjectId Oid = null;
try {
MongoDatabase mongoDatabase = mongoClient.getDatabase(database);
MongoCollection<Document> collection = mongoDatabase.getCollection(collName);
Oid = new ObjectId(id);
Bson filter = Filters.eq("_id", Oid);
DeleteResult deleteResult = collection.deleteOne(filter);
count = (int) deleteResult.getDeletedCount();
} catch (Exception e) {
return 0;
}
return count;
}
public static Document updateById(MongoClient mongoClient, String database,String collName, String id, Document newDoc) {
ObjectId idObj = null;
try {
MongoDatabase mongoDatabase = mongoClient.getDatabase(database);
MongoCollection<Document> collection = mongoDatabase.getCollection(collName);
idObj = new ObjectId(id);
Bson filter = Filters.eq("_id", idObj);
collection.updateOne(filter, new Document("$set", newDoc));
} catch (Exception e) {
return null;
}
return newDoc;
}
public static void close(MongoClient mongoClient) {
if (mongoClient != null) {
mongoClient.close();
}
}
}