Java连接mongoDB的操作

java连接mongoDB数据库

前提:在连接mongoDB前先把mongoDB数据库搭好,这里我就不多说啦,直接上代码

  1. 导入pom依赖
<!--mongo-->
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.11.2</version>
</dependency>
  1. 创建链接对象并操作
// 连接服务器
MongoClient mongoClient = new MongoClient("10.2.0.192");
// 获取库 没有则创建
MongoDatabase june = mongoClient.getDatabase("june");
// 获取获取数据库表中的集合 没有则创建
MongoCollection<Document> test = june.getCollection("test");

// 对表的操作

// 添加数据 后面可以跟n个 append    增
test.insertOne(new Document().append("name","june").append("age",20));

// 删除数据     删
DeleteResult deleteResult = test.deleteMany(new Document("age", 19));
// 获取删除的条数
System.out.println(deleteResult.getDeletedCount());

// 修改数据     改
test.updateOne(new Document("name","june"),new Document("$set",new Document("age",18)));

// 获取所有数据       查
FindIterable<Document> documents = test.find();
for (Document document : documents) {
    System.out.println(document.toJson());
}

// 关闭资源
mongoClient.close();
  1. 使用Gson转换查询出来的数据

    3.1 导入pom依赖

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

​ 3.2 使用Gson

为什么要使用Gson?答案如下

不使用Gson查询出来的数据
Document{{_id=5dd8da5cd6ad5b0e3aaa499e, name=june, age=18}}
Document{{_id=5dd8db35c2ea5c499d91c1ee, name=june, age=20}}
...
只能获取到所有的信息,没办法取其中之一

使用Gson查询出来的数据可以取其中的数据,但前提得创建bean对象
注意:bean对象的id是一个对象(MongoDB默认生成的),所以要创建两个bean对象,示例如下
// 此处使用lombok无法生成get set,原因可能是$符号导致的
public class OId {
    // $oid为已确定的,不能够改变
    private String $oid;
    public String get$oid() {
        return $oid;
    }
    public void set$oid(String $oid) {
        this.$oid = $oid;
    }
    @Override
    public String toString() {
        return "OId{" +
                "$oid='" + $oid + '\'' +
                '}';
    }
}

@Data
public class User {
    private OId _id;
    private String name;
    private Integer age;
}

public class App2 {
    public static void main(String[] args) {
        MongoClient mongoClient = new MongoClient("10.2.0.192");
        MongoDatabase june = mongoClient.getDatabase("june");
        MongoCollection<Document> test = june.getCollection("test");
        // 查询所有的文档
        FindIterable<Document> documents = test.find();
        // new一个gson对象
        Gson gson = new Gson();
        for (Document document : documents) {
            // 转为json字符串
            String json = document.toJson();
            // 获取对象
            User user = gson.fromJson(json, User.class);
            // 根据键名逐个输出取到的值,键名必须和表匹配,否则拿到null,
            System.out.println(user.get_id().get$oid() + ":" + user.getName() + ":" + user.getAge());
        }
    }
}

// 拿到的结果
5dd8da5cd6ad5b0e3aaa499e:june:18
5dd8db35c2ea5c499d91c1ee:june:20

以如果是springBoot,只需要在配置文件里面写上一下代码就行了,不需要再像上面一样创建连接

spring:
  data:
    mongodb:
      uri: mongodb://10.1.0.111  这里写的是数据库ip

总结

如果要对拿到的数据进行操作的话,建议使用后者的方法,除了Gson以外也可以使用Jackson、Fastjson等这类转json的工具,效果都是一样的,看个人喜好吧

发布了30 篇原创文章 · 获赞 7 · 访问量 1578

猜你喜欢

转载自blog.csdn.net/qq_41946543/article/details/103572159
今日推荐