天天看點

Java連接配接MongoDB CRUD操作案例

1、導入驅動

導入MongoDB JDBC 驅動 下載下傳連結

導入測試相關jar包

  • juit-4.12.jar
  • hamcrest-.2.2.jar

2、建立連接配接

下面的示例顯示了連接配接到本地計算機上的資料庫的五種方法。如果資料庫不存在,MongoDB 将為你建立它。

  1. 這裡的 “localhost” 表示連接配接的伺服器位址,27017 為端口号
  1. 可以省略 端口号 不寫,系統将預設端口号為 27017
  1. 也可以将 伺服器位址 和 端口号 都省略,系統預設伺服器位址為 “localhost”,端口号為 27017
  1. 指定MongoClinetURI 連接配接字元串
MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(connectionString);
           

3、通路資料庫

使用MongoClient裡的getDatabase() 方法通路資料庫。如果資料庫不存在,MongoDB 會在首次存儲該資料庫資料時建立該資料庫。

4、通路集合

使用MongoDatabase裡的getCollection()方法通路集合。如果集合不存在,MongoDB 會在首次存儲該集合的資料時建立該集合

5、建立文檔

5.1 插入一個文檔

若要在集合中插入單個文檔,可以使用集合的方法insertOne()

@Test
public void insertOne() {

    //建立文檔
    Document doc = new Document("name", "star潮")
            .append("age", "23")
            .append("addr", "亳州")
            .append("course", Arrays.asList("MongoDB", "機器學習", "嵌入式", "軟體工程"));
    //插入資料庫
    students.insertOne(doc);
}
           

5.2 插入多個文檔

若要添加多個文檔,可以使用集合的insertMany()方法

@Test
public void insertMany() {
    //建立文檔
    Document doc1 = new Document("name", "海甯大哥")
            .append("age", "18")
            .append("addr", "南京")
            .append("course", Arrays.asList("機器學習"));
    Document doc2 = new Document("name", "劉梅西")
            .append("age", "23")
            .append("addr", "蕪湖")
            .append("course", Arrays.asList("知識産權", "資訊檢索", "中特", "自然辨證法"));
    Document doc3 = new Document("name", "張C羅")
            .append("age", "22")
            .append("addr", "蚌埠")
            .append("course", Arrays.asList("MongoDB"));
    ArrayList<Document> list = new ArrayList<>();
    list.add(doc1);
    list.add(doc2);
    list.add(doc3);
    //插入資料庫
    students.insertMany(list);
}
           

6、查詢集合

6.1 查找集合中的第一個文檔

Document first = students.find().first();
System.out.println(first);
           

6.2 查找集合中的所有文檔

//擷取集合中的所有文檔
FindIterable<Document> iterable = students.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
	System.out.println(cursor.next().toJson());
}
           

6.3 查找與篩選器比對的文檔

@Test
public void findFilter() {
    //指定查詢過濾器
    Bson eq = eq("course", "MongoDB");
    //查找字段具有該值的第一個文檔
    Document first = students.find(eq).first();
    System.out.println(first.toJson());
    //查找字段具有該值的所有文檔
    FindIterable<Document> iterable = students.find(eq);
    MongoCursor<Document> iterator = iterable.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
}
           

7、更新文檔

7.1 要更新單個文檔

@Test
public void updateOne() {
    //指定過濾器
    Bson eq = eq("name", "star潮");
    //更新一個文檔
    UpdateResult updateResult = students.updateOne(eq, new Document("$set", new Document("name", "張XC")));
    System.out.println(updateResult);
}
           

7.2 更新多個文檔

//把大于20歲的學生年齡改成18歲
@Test
public void updateMany() {
    Bson gt = Filters.gt("age", "20");
    UpdateResult updateResult = students.updateMany(gt, new Document("$set", new Document("age", "18")));
    System.out.println(updateResult);
}
           

8、删除文檔

@Test
public void delete() {
    //删除一條文檔
    students.deleteOne(eq("name","張XC"));
    //删除多條文檔
    students.deleteMany(eq("age","18"));
}
           

繼續閱讀