此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data MongoDB 4.4.0! |
开始
引导设置工作环境的一种简单方法是通过 start.spring.io 创建基于 Spring 的项目,或者在 Spring Tools 中创建 Spring 项目。
示例存储库
GitHub spring-data-examples 存储库包含几个示例,您可以下载并试用这些示例,以了解该库的工作原理。
世界您好
首先,您需要设置一个正在运行的 MongoDB 服务器。有关如何启动 MongoDB 实例的说明,请参阅 MongoDB 快速入门指南。
安装后,启动 MongoDB 通常只需运行以下命令即可:/bin/mongod
然后,您可以创建一个要持久化的类:Person
package org.springframework.data.mongodb.example;
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 + "]";
}
}
您还需要一个主应用程序来运行:
-
Imperative
-
Reactive
package org.springframework.data.mongodb.example;
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");
}
}
package org.springframework.data.mongodb.example;
import static org.springframework.data.mongodb.core.query.Criteria.*;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import com.mongodb.reactivestreams.client.MongoClients;
public class ReactiveMongoApplication {
public static void main(String[] args) throws Exception {
ReactiveMongoOperations mongoOps = new ReactiveMongoTemplate(MongoClients.create(), "database");
mongoOps.insert(new Person("Joe", 34))
.then(mongoOps.query(Person.class).matching(where("name").is("Joe")).first())
.doOnNext(System.out::println)
.block();
mongoOps.dropCollection("person").block();
}
}
当您运行 main 程序时,前面的示例将生成以下输出:
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]
即使在这个简单的示例中,也很少有事项需要注意:
-
您可以使用标准或反应对象以及要使用的数据库的名称来实例化 Spring Mongo 的中心帮助程序类
MongoTemplate
。MongoClient
-
Mapper 适用于标准 POJO 对象,无需任何其他元数据(尽管您可以选择提供该信息)。请参阅此处)。
-
约定用于处理字段,将其转换为存储在数据库中的字段。
id
ObjectId
-
映射约定可以使用字段访问。请注意,该类只有 getter。
Person
-
如果构造函数参数名称与存储文档的字段名称匹配,则它们用于实例化对象