java 使用MongoDB作為資料庫三個不同階段的操作記錄
阿新 • • 發佈:2018-12-24
一、前言
這是一個很蛋疼的問題,對於一個新人來說要使用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;