Java 连接 MongoDB 的操作

本贴最后更新于 496 天前,其中的信息可能已经事过境迁

pwnaTvHyu18XbPs

MongoDB

java 连接 mongoDB 数据库

前提:在连接 mongoDB 前先把 mongoDB 数据库搭好,这里我是使用 CentOS7 搭的 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 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 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 test = june.getCollection("test");
        // 查询所有的文档
        FindIterable 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 的工具,效果都是一样的,看个人喜好吧

  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    82 引用 • 53 回帖 • 1 关注

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...