跳到主要内容
版本:5.1.1

快速上手

Doubao 中英对照 Getting Started

一种快速搭建工作环境的简便方式是,通过 start.spring.io 创建一个基于 Spring 的项目,或在 Spring Tools 中创建一个 Spring 项目。

示例仓库​

GitHub 上的 spring-data-examples 仓库 提供了若干示例,您可以下载并动手尝试,以感受该库的工作方式。

Hello World​

首先,您需要准备一个正在运行的 MongoDB 服务器。关于如何启动 MongoDB 实例,请参阅 MongoDB 快速入门指南。安装完成后,启动 MongoDB 通常只需运行以下命令:/bin/mongod

然后,您可以创建一个 Person 类来持久化:

public class Person {

private String 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 + "]";
}
}

您还需要一个用于运行的主应用程序:

import static org.springframework.data.mongodb.core.query.Criteria.*;

import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;

import com.mongodb.client.MongoClients;

public class MongoApplication {

public static void main(String[] args) throws Exception {

MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "database");
mongoOps.insert(new Person("Joe", 34));

System.out.println(mongoOps.query(Person.class).matching(where("name").is("Joe")).firstValue());

mongoOps.dropCollection("person");
}
}

运行主程序时,上述示例会产生以下输出:

10:01:32,265 DEBUG o.s.data.mongodb.core.MongoTemplate - insert Document containing fields: [_class, age, name] in collection: Person
10:01:32,765 DEBUG o.s.data.mongodb.core.MongoTemplate - findOne using query: { "name" : "Joe"} in db.collection: database.Person
Person [id=4ddbba3c0be56b7e1b210166, name=Joe, age=34]
10:01:32,984 DEBUG o.s.data.mongodb.core.MongoTemplate - Dropped collection [database.person]

即使在这个简单示例中,也有几点值得注意:

  • 您可以使用标准或响应式 MongoClient 对象以及要使用的数据库名称,来实例化 Spring Mongo 的核心辅助类 MongoTemplate。

  • 映射器直接处理标准 POJO 对象,无需任何额外元数据(不过您也可以选择提供这些信息,请参阅此处)。

  • 框架采用约定来处理 id 字段,在存入数据库时将其转换为 ObjectId。

  • 映射约定可以使用字段访问。请注意,Person 类只有 getter 方法。

  • 如果构造函数参数名与所存储文档的字段名匹配,则会使用它们来实例化对象