环境配置
引入MongoDB驱动:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.8.2</version>
</dependency>
连接数据库
public class BaseDemo {
public static void main(String[] args) {
MongoClient client = new MongoClient("127.0.0.1", 27017);
MongoDatabase db = client.getDatabase("test");
MongoCollection<Document> book = db.getCollection("book");
client.close();
}
}
封装成工具类:
public class MongoDBUtil {
private static MongoClient client = null;
static {
if (client == null) {
client = new MongoClient("127.0.0.1", 27017);
}
}
public static MongoDatabase getDatabase(String dbName) {
return client.getDatabase(dbName);
}
public static MongoCollection getCollection(String dbName, String collName){
return getDatabase(dbName).getCollection(collName);
}
public static void main(String[] args) {
MongoDBUtil.getCollection("test", "person");
System.out.println("ok");
}
}
带用户认证的工具类:
public class MongoDBAuthUtil {
private static MongoClient client = null;
static {
if (client == null) {
MongoCredential credential = MongoCredential.createCredential("root", "test", "123456".toCharArray());
ServerAddress address = new ServerAddress("127.0.0.1", 27017);
client = new MongoClient(address, credential, MongoClientOptions.builder().build());
}
}
public static MongoDatabase getDatabse(String dbName){
return client.getDatabase(dbName);
}
public static MongoCollection getCollection(String dbName, String collName) {
MongoDatabase databse = getDatabse(dbName);
return databse.getCollection(collName);
}
public static void main(String[] args) {
MongoDBAuthUtil.getDatabse("test");
System.out.println("ok");
}
}
带用户认证的连接池:
public class MongoDBAuthPoolUtil {
private static MongoClient client = null;
static {
if (client == null) {
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
builder.connectionsPerHost(10);
builder.connectTimeout(5000);
builder.socketTimeout(5000);
MongoCredential credential = MongoCredential.createCredential("root", "test", "123456".toCharArray());
ServerAddress address = new ServerAddress("127.0.0.1", 27017);
client = new com.mongodb.MongoClient(address, credential, builder.build());
}
}
public static MongoDatabase getDatabase(String dbName) {
return client.getDatabase(dbName);
}
public static MongoCollection getCollection(String dbName, String collName) {
return getDatabase(dbName).getCollection(collName);
}
public static void createCollection(String dbName, String collName) {
getDatabase(dbName).createCollection(collName);
}
public static void dropCollection(MongoCollection coll) {
coll.drop();
}
}
集合操作
public class CollectionDemo {
public static void main(String[] args) {
MongoClient mongo = new MongoClient( "localhost" , 27017 );
MongoDatabase db = mongo.getDatabase("test");
CreateCollectionOptions cco = new CreateCollectionOptions();
db.createCollection("ceshi", cco);
MongoCollection<Document> col = db.getCollection("ceshi");
MongoIterable<String> nameList = db.listCollectionNames();
for (String name : nameList)
System.out.println(name);
ListCollectionsIterable<Document> docList = db.listCollections();
for (Document doc : docList)
System.out.println(doc.toString() + " " + doc.size());
col.drop();
mongo.close();
}
}
文档操作
1、插入
public class InsertDocument {
public static void main(String[] args) {
InsertDocument insertDocument = new InsertDocument();
insertDocument.insertSingleDocument();
insertDocument.insertManyDocument();
}
public void insertSingleDocument() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
Document document = new Document();
document.append("name", "三国演义").append("price", 22.6);
InsertOneOptions iop = new InsertOneOptions();
collection.insertOne(document, iop);
}
public void insertManyDocument() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
List<Document> list = new ArrayList<Document>();
for (int i = 0; i < 5; i++) {
Document document = new Document();
document.append("name", "哈利波特" + i)
.append("price", 66.3 + i);
list.add(document);
}
InsertManyOptions imo = new InsertManyOptions();
collection.insertMany(list, imo);
}
}
2、查询文档
public class FindDocment {
public static void main(String[] args) {
FindDocment findDocment = new FindDocment();
findDocment.selectDocumentSorting();
}
public void selectDocumentById() {
MongoCollection collection = MongoDBUtil.getCollection("test", "class");
FindIterable<Document> iterable = collection.find(Filters.eq("_id", 1));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
Document document = cursor.next();
System.out.println(document.get("_id"));
System.out.println(document.get("name"));
System.out.println(document.get("student"));
}
}
public void selectDocumentConditionByGt() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
FindIterable<Document> iterable = collection.find(Filters.gt("price", 10));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
public void selectDocumentConditionByType() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
FindIterable<Document> iterable = collection.find(Filters.type("price", "number"));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
public void selectDocumentConditionByIn() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
FindIterable<Document> iterable = collection.find(Filters.in("name", "三国演义", "说文解字"));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
public void selectDocumentConditionByRegex() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
FindIterable<Document> iterable = collection.find(Filters.regex("name", Pattern.compile("^哈利波特")));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
public void selectDocumentConditionUseAnd() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
FindIterable<Document> iterable = collection.find(Filters.and(Filters.regex("name", Pattern.compile("^哈利波特")),
Filters.eq("price", 11.1)));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
public void selectDocumentConditionUseOr() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
FindIterable<Document> iterable = collection.find(Filters.or(Filters.regex("name", Pattern.compile("^哈利波特")),
Filters.eq("price", 22.6)));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
public void selectDocumentConditionUseAndOr() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
FindIterable<Document> iterable = collection.find(Filters.or(
Filters.and(Filters.eq("name", "说文解字"), Filters.eq("price", 23.4)),
Filters.regex("name", Pattern.compile("^哈利波特"))
));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
public void selectDocumentSorting() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
FindIterable<Document> iterable = collection.find().sort(new Document("price", -1));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
}
3、更新文档
public class UpdateDocument {
public static void main(String[] args) {
UpdateDocument updateDocument = new UpdateDocument();
updateDocument.updateSingleDocumentSingleKey();
updateDocument.updateSingleDocumentManyKey();
updateDocument.updateManyDocumentSingleKey();
updateDocument.updateManyDocumentManyKey();
updateDocument.updateDocumentArray();
}
public void updateSingleDocumentSingleKey() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
collection.updateOne(Filters.eq("name", "哈利波特1"), Updates.set("price", 99.9));
}
public void updateSingleDocumentManyKey() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
UpdateResult updateResult = collection.updateOne(Filters.eq("name", "哈利波特1"), Updates.combine(Updates.set("price", 111), Updates.set("count", 50)));
System.out.println(updateResult.getMatchedCount());
}
public void updateManyDocumentSingleKey() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
collection.updateMany(Filters.regex("name", "^哈利波特"), new Document("$set", new Document("count", 88)));
}
public void updateManyDocumentManyKey() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
collection.updateMany(Filters.regex("name", "^哈利波特"), new Document("$set", new Document("count", 99).append("price", 11.1)));
}
public void updateDocumentArray() {
MongoCollection collection = MongoDBUtil.getCollection("test", "array");
collection.updateOne(Filters.eq("_id", 1), new Document("$push", new Document("char", "z")));
}
}
4、删除文档
public class RemoveDocument {
public static void main(String[] args) {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
DeleteResult deleteResult = collection.deleteOne(Filters.eq("name", "tom"));
System.out.println(deleteResult.getDeletedCount());
DeleteResult dr = collection.deleteMany(Filters.regex("name", Pattern.compile("^哈利波特")));
System.out.println(dr.getDeletedCount());
}
}
5、Date相关
public class DateUtil {
public static String dateToString(String parten, Date date) {
SimpleDateFormat format = new SimpleDateFormat(parten);
return format.format(date);
}
public static Date stringToDate(String parten, String date) {
SimpleDateFormat format = new SimpleDateFormat(parten);
Date d = null;
try {
d = format.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return d;
}
}
public class DateDocument {
public static void main(String[] args) {
DateDocument dateDocument = new DateDocument();
dateDocument.insertDocumentSystemDate();
dateDocument.selectDocumentDateUseEq();
}
public void insertDocumentSystemDate() {
MongoCollection collection = MongoDBUtil.getCollection("test", "birthday");
collection.insertOne(new Document("_id", 1).append("datetime", new Date()));
}
public void selectDocumentDateUseEq() {
MongoCollection collection = MongoDBUtil.getCollection("test", "birthday");
Date date = DateUtil.stringToDate("yyyy-MM-dd HH:mm:ss", "2019-05-01 13:32:13");
FindIterable<Document> iterable = collection.find(Filters.eq("birthday", date));
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
}
6、聚合
public class AggregateDocument {
public static void main(String[] args) {
AggregateDocument aggregateDocument = new AggregateDocument();
aggregateDocument.selectDocumentAggregateCount();
aggregateDocument.selectDocumentAggregateSum();
}
public void selectDocumentAggregateCount() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
Document sum = new Document();
sum.put("$sum", 1);
Document count = new Document();
count.put("_id", null);
count.put("count", sum);
Document group = new Document();
group.put("$group", count);
List<Document> list = new ArrayList<Document>();
list.add(group);
AggregateIterable iterable = collection.aggregate(list);
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()){
System.out.println(cursor.next());
}
}
public void selectDocumentAggregateSum() {
MongoCollection collection = MongoDBUtil.getCollection("test", "book");
Document sum = new Document("$sum", "$price");
Document totalPrice = new Document("totalPrice", sum).append("_id", null);
Document group = new Document("$group", totalPrice);
List<Document> list = new ArrayList<Document>();
list.add(group);
AggregateIterable<Document> iterable = collection.aggregate(list);
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)