最新的稳定版请使用 Spring Data MongoDB 4.3.1Spring中文文档

最新的稳定版请使用 Spring Data MongoDB 4.3.1Spring中文文档

引导设置工作环境的一种简单方法是通过 start.spring.io 创建基于 Spring 的项目,或者在 Spring 工具中创建 Spring 项目。Spring中文文档

示例存储库

GitHub spring-data-examples 存储库包含多个示例,您可以下载和使用这些示例来了解该库的工作原理。Spring中文文档

世界您好

首先,您需要设置一个正在运行的MongoDB服务器。有关如何启动 MongoDB 实例的说明,请参阅 MongoDB 快速入门指南。 安装后,启动MongoDB通常是运行以下命令的问题:/bin/mongodSpring中文文档

然后,您可以创建一个要持久化的类:PersonSpring中文文档

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

您还需要一个主应用程序来运行:Spring中文文档

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();
	}
}

运行主程序时,上述示例将生成以下输出:Spring中文文档

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中文文档

  • 您可以使用标准或反应式对象以及要使用的数据库名称来实例化 Spring Mongo 的中央帮助程序类 MongoTemplateMongoClientSpring中文文档

  • 映射器适用于标准 POJO 对象,无需任何额外的元数据(尽管您可以选择提供该信息。请看这里Spring中文文档

  • 约定用于处理字段,将其转换为存储在数据库中的字段。idObjectIdSpring中文文档

  • 映射约定可以使用字段访问。请注意,该类只有 geters。PersonSpring中文文档

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