本章介绍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>