1. 程式人生 > >java 使用MongoDB作為資料庫三個不同階段的操作記錄

java 使用MongoDB作為資料庫三個不同階段的操作記錄

一、前言

這是一個很蛋疼的問題,對於一個新人來說要使用MongoDB到專案中,而且是在自學的情況下。由於技術的不斷更新,新人無法知道在Internet上尋找到的技術是否是現在專案中最使用的,在這個問題上本人就很深有體會。繞得暈暈的,查詢到的資料有多個版本,下面是對各mongo技術各階段的一個記錄,希望幫助到有同樣命運的你!

二、本文主要內容目錄

3.1——mongo第一階段——————-java使用原生的mongo進行操作
3.2——mongo第二階段——————-spring使用mongoTemplate進行操作
3.3——mongo第三階段——————-spring boot使用mongoRepository進行操作

三、內容

3.1 mongo第一階段

java原生程式碼操作mongodb資料庫的兩種方式
程式碼引用:原生mongo兩種不同操作

package monAndMysql;  

import java.util.ArrayList;  
import java.util.Date;  
import java.util.List;  
import java.util.Set;  
import org.bson.BsonDocument;  
import org.bson.BsonString;  
import org.bson.Document;  
import org.bson
.conversions.Bson; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb
.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; /** * mongodb和mysql效能測試 * * @author tuzongxun123 * */ public class MonAndMysqlTest { public static void main(String[] args) { mongodbTest(); } public static void mongodbTest() { ServerAddress sa = new ServerAddress("192.168.0.7", 27017); List<MongoCredential> mongoCredentialList = newArrayList<MongoCredential>(); // java程式碼連線mongodb3.0資料庫驗證,userName,dbName,password mongoCredentialList.add(MongoCredential.createMongoCRCredential( "admin", "admin", "123456".toCharArray())); MongoClient client = new MongoClient(sa, mongoCredentialList); // 第一種方式 // 第一種方式獲取db,該方法已經不建議使用 DB mongoDB = client.getDB("mongoTest1"); DBCollection collection1 = mongoDB.getCollection("userTest1"); // 這裡的資料型別是dbobject DBObject document1 = new BasicDBObject(); document1.put("name", "mongoTest1"); document1.put("createTime", new Date().getTime()); // 插入資料 collection1.insert(document1); // 查詢資料 DBCursor cursor1 = collection1.find(); System.out.println("第一種方式插入資料的結果:"); while (cursor1.hasNext()) { DBObject object = cursor1.next(); Set<String> keySet = object.keySet(); for (String key : keySet) { System.out.println(key + ":" + object.get(key)); } } // 更改資料 DBObject query = new BasicDBObject(); DBObject update = new BasicDBObject(); query.put("name", "mongoTest1"); update.put("$set", new BasicDBObject("name", "update1")); collection1.update(query, update); System.out .println("--------------------------------------------------------------------------------------"); System.out.println("第一種方式修改資料的結果:"); DBCursor cursor11 = collection1.find(); while (cursor11.hasNext()) { DBObject object = cursor11.next(); Set<String> keySet = object.keySet(); for (String key : keySet) { System.out.println(key + ":" + object.get(key)); } } // 刪除資料 DBObject query1 = new BasicDBObject(); query1.put("name", "update1"); collection1.remove(query1); System.out .println("--------------------------------------------------------------------------------------"); System.out.println("第一種方式刪除資料的結果:"); DBCursor cursor12 = collection1.find(); while (cursor12.hasNext()) { DBObject object = cursor12.next(); Set<String> keySet = object.keySet(); for (String key : keySet) { System.out.println(key + ":" + object.get(key)); } } // 第二種方式 System.out .println("****************************************************************************"); // 第二種方式獲取db及插入資料和查詢操作。推薦方式 MongoDatabase database = client.getDatabase("mongoTest2"); // 注意這裡的資料型別是document Document document2 = new Document(); document2.put("name", "mongoTest2"); document2.put("createTime", new Date().getTime()); MongoCollection collection2 = database.getCollection("userTest2"); // 插入資料 collection2.insertOne(document2); // 查詢資料,注意這裡直接查詢出的結果不是遊標,還需要轉換 FindIterable<Document> findIterable = collection2.find(); MongoCursor<Document> cursor2 = findIterable.iterator(); System.out.println("第二種方式插入資料的結果:"); while (cursor2.hasNext()) { Document document = cursor2.next(); Set<String> keySet = document.keySet(); for (String key : keySet) { System.out.println(key + ":" + document.get(key)); } } // 更改資料 Bson filter = Filters.eq("name", "mongoTest2"); BsonDocument update2 = new BsonDocument(); update2.put("$set", new BsonDocument("name", new BsonString("update2"))); collection2.updateOne(filter, update2); System.out .println("--------------------------------------------------------------------------------------"); MongoCursor<Document> cursor21 = findIterable.iterator(); System.out.println("第二種方式更改資料的結果:"); while (cursor21.hasNext()) { Document document = cursor21.next(); Set<String> keySet = document.keySet(); for (String key : keySet) { System.out.println(key + ":" + document.get(key)); } } // 刪除資料 Bson filter2 = Filters.eq("name", "update2"); collection2.deleteOne(filter2); System.out .println("--------------------------------------------------------------------------------------"); MongoCursor<Document> cursor22 = findIterable.iterator(); System.out.println("第二種方式刪除資料的結果:"); while (cursor22.hasNext()) { Document document = cursor22.next(); Set<String> keySet = document.keySet(); for (String key : keySet) { System.out.println(key + ":" + document.get(key)); } } // 關閉資料庫連線 client.close(); } }

以上操作結果:
結果:

3.2 mongo第二階段

MongoTemplate位於
import org.springframework.data.mongodb.core.MongoTemplate;