一架梯子,一头程序猿,仰望星空!
Java MongoDB教程 > 内容正文

Java MongoDB插入文档


本章介绍Java MongoDB的文档写入操作。

前置教程

对象和JSON映射

MongoDB的文档数据是以Json格式进行存储,Java Spring data mongodb支持将Java对象和JSON数据直接进行映射,类似我们平时做API开发的时候,Java对象和JSON数据互相转换。

插入文档

mongoTemplate支持将JAVA POJO对象直接保存到mongodb中。
定义一个实体类

public class Person {
  private String id; // 根据规则id属性跟MongoDB集合的_id属性对应。
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public String getId() {
    return id;
  }
  public String getName() {
    return name;
  }
  public int getAge() {
    return age;
  }

  @Override
  public String toString() {
    return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
  }
}

插入文档

// 实例化对象
Person p = new Person("tizi365", 100);

// 插入文档
mongoTemplate.insert(p);

保存到mongodb的person集合中,数据如下:

{
    "_id": {
        "$oid": "60bc7dcbfd939959b5096ed0"
    },
    "name": "tizi365",
    "age": 100,
    "_class": "com.example.mongo.domain.Person"
}

_id属性对Person类的id,不填则自动生成。
_class属性记录了实体类名字,用于反序列化。

说明:mongoTemplate将数据保存到那个集合,集合名字的计算规则是根据实体类的名字,转换成小写字母计算出来,例如: Person类对应集合名字person。

嵌套对象

MongoDB以JSON格式存储数据,所以支持将嵌套对象保存到MongoDB集合中。

例如:

@Data
public class Person {
    private String id;
    private String name;
    private int age;
    private Course course; // 定义嵌套对象属性

    @Data
    static public class Course{
        private String id;
        private String title;
    }
}

保存嵌套对象数据

Person person3 = new Person();
person3.setName("tizi365");
person3.setAge(25);

Person.Course course = new Person.Course();
course.setTitle("java教程");
course.setId("java");
person3.setCourse(course);
// 插入文档
mongoTemplate.insert(person3);

MongoDB中数据如下:

{
    "_id": {
        "$oid": "60e5cffed1fab52f1e0be62d"
    },
    "name": "tizi365",
    "age": 25,
    "course": {
        "_id": "java",
        "title": "java教程"
    },
    "_class": "com.example.mongo.domain.Person"
}

批量插入文档

```
ArrayList<person> persons = new ArrayList(10);
for (int i = 0; i
</person>