天天看点

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"));
}
           

继续阅读