1.聲明
由于前面使用了python操作的MongoDB資料庫,本人現在使用Java方式實作對目前的資料庫的操作,在用于記錄操作!
2.目前的pom依賴
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.0</version>
</dependency>
</dependencies>
3.連接配接以及查詢操作
由于python中使用的是MongoClient,是以本人檢視是否存在這個類(存在),以及使用這個類
private final String HOST = "localhost";
private final int POST = 27017;
public MongoClient getMongoClient() {
return new MongoClient(HOST, POST);
}
public static void main(String[] args) {
}
// 用于測試目前的對MongoDB資料庫的查詢操作
@Test
public void testFindOption() {
MongoClient mongoClient = getMongoClient();
try {
Assert.notNull(mongoClient, "目前擷取的client不能為空");
// 和python中相同的需要使用list方式顯示所有的資料庫名稱
System.out.println("輸出所有的資料庫名字");
// MongoClientOptions mongoClientOptions = mongoClient.getMongoClientOptions();
MongoIterable<String> listDatabaseNames = mongoClient.listDatabaseNames();
CollectionUtils.printCollectionItem(listDatabaseNames);
// 擷取目前的資料庫
MongoDatabase db = mongoClient.getDatabase("db1");
// 通過目前的資料庫擷取目前的集合
MongoCollection<Document> testCollection = db.getCollection("test");
// 通過目前的集合對象擷取文檔
System.out.println("用于檢視目前的test中的所有的資料");
FindIterable<Document> allDocuments = testCollection.find();
CollectionUtils.printCollectionItem(allDocuments);
// 查詢第一個資料
System.out.println("開始擷取目前的資料結果,查詢_id為1的資料:");
allDocuments = testCollection.find(Filters.eq("_id", 1));
CollectionUtils.printCollectionItem(allDocuments);
// 可以使用Filters實作目前的查詢操作
} finally {
mongoClient.close();
}
}
結果:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP350dBpWT1EFVOBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3YDO0MTM1cTM0ITMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
4.添加資料操作
// 用于測試添加資料的操作
@Test
public void testAddOption() {
MongoClient mongoClient = getMongoClient();
try {
// 添加資料庫
MongoDatabase javaDB = mongoClient.getDatabase("javaDB");
// 在目前的資料庫中添加test集合
javaDB.createCollection("test");
MongoCollection<Document> testCollection = javaDB.getCollection("test");
// 添加文檔資料
System.out.println("添加單條資料==================");
Map<String, Object> zsMap = new HashMap<String, Object>();
zsMap.put("name", "張三");
zsMap.put("age", 18);
Document zs = new Document(zsMap);
testCollection.insertOne(zs);
System.out.println("添加多條資料=================");
List<Document> documents=new ArrayList<Document>();
Map<String, Object> lsMap = new HashMap<String, Object>();
lsMap.put("name", "李四");
lsMap.put("age", 20);
Document ls = new Document(lsMap);
Map<String, Object> wwMap = new HashMap<String, Object>();
wwMap.put("name", "王五");
wwMap.put("age", 22);
Document ww = new Document(wwMap);
documents.add(ls);
documents.add(ww);
testCollection.insertMany(documents);
} finally {
if (mongoClient != null)
mongoClient.close();
}
}
結果:
5.修改資料操作
// 測試目前的資料的更新操作
@Test
public void testUpdateOption() {
MongoClient mongoClient = getMongoClient();
try {
MongoDatabase javaDB = mongoClient.getDatabase("javaDB");
MongoCollection<Document> testCollection = javaDB.getCollection("test");
// 修改目前的名字為張三的年齡為16歲//
// UpdateResult updateOne = testCollection.updateOne(Filters.eq("name",
// "張三"),Updates.set("age",16));
// System.out.println(updateOne.getModifiedCount());
// 發現目前的UpdateOne的時候隻能修改記錄資訊,如果出現需要修改多個資訊就會出現問題
// 使用多條更新
// 将目前名字為張三的名字改為張三Update,年齡修改為20
// List<Bson> updateList = new ArrayList<Bson>();
// updateList.add(Updates.set("name", "張三Update"));
// updateList.add(Updates.set("age", 22));
// UpdateResult updateResult = testCollection.updateOne(Filters.eq("name", "張三"), updateList);
// System.out.println("目前更新的條數為:" + updateResult.getModifiedCount());
// 更新成功,是以建議使用目前的List方式實作目前的更新操作,如果使用一個可能出現問題
// 使用目前的批量更新資料,将所有年齡大于21歲資料中将年齡設定為18
UpdateResult updateMany = testCollection.updateMany(Filters.gt("age", 21), Updates.set("age", 18));
System.out.println("目前更新的條數:" + updateMany.getModifiedCount());
} finally {
if (mongoClient != null)
mongoClient.close();
}
}
上面執行的結果就不顯示了!
6.删除資料操作
// 測試目前的删除操作
@Test
public void testDeleteOption() {
MongoClient mongoClient = getMongoClient();
try {
MongoDatabase javaDB = mongoClient.getDatabase("javaDB");
MongoCollection<Document> testCollection = javaDB.getCollection("test");
// 删除目前的名字為張三的資料
testCollection.deleteOne(Filters.eq("name", "張三"));
// 删除年齡大于18的所有資料
testCollection.deleteMany(Filters.gt("age", 18));
} finally {
if (mongoClient != null)
mongoClient.close();
}
}
結果:
7.總結
1.
目前的Java對目前的MongoDB資料操作和python操作基本上差不多
2.java操作的時候
添加資料為一個Map集合資料,查詢的時候就需要使用Filters這個進行操作
3.修改資料的時候需要注意,
如果修改一條資料為updateOne(Filters,Updates)
,
如果是修改多條資料使用,updateMany(Filters,Updates)
,注意如果需要
修改多個内容可以使用重載的updateXXX(Filters,List< Bson >)其中Bson的實際類型為Updates
4.
删除資料操作和Python差不多
以上純屬個人見解,如有問題請聯系本人!