入门指南
一个简单的方式来快速搭建工作环境是通过 start.spring.io 创建一个基于 Spring 的项目,或者在 Spring Tools 中创建一个 Spring 项目。
示例仓库
GitHub 上的 spring-data-examples 仓库 提供了多个示例,你可以下载并运行这些示例,以便更好地了解该库的工作原理。
Hello World
首先,你需要设置一个正在运行的 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();
	}
}
当你运行主程序时,前面的示例会产生以下输出:
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字段时,遵循将id转换为ObjectId的约定。
- 
映射约定可以使用字段访问。注意, Person类只有 getter 方法。
- 
如果构造函数参数名称与存储文档的字段名称匹配,它们将被用于实例化对象。