参考地址:https://docs.spring.io/spring-data/mongodb/docs/2.1.3.RELEASE/reference/html/#mapping-usage
spring-data-mongodb中的实体映射是通过MongoMappingConverter这个类实现的。它可以通过注解把java类转换为mongodb的文档。
@Document - 把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。
如:@Document(collection=“mongodb”) mongodb对应表
@CompoundIndexes和@CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。br/>如:@CompoundIndexes({
//联合索引 name 索引名称 、def 索引字段、parameter1升序、parameter3降序
@CompoundIndex(name = "publishDate_informationId",def = "{'parameter1':1,'parameter3':-1}")
备注:def参数可以定义复合索引的字段及排序方向
@Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。
@Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。
如:
//创建单字段索引(默认ASCENDING 升序、DESCENDING 降序)
@Indexed(direction = DESCENDING)
private Long parameter1;br/>备注:direction参数可以指定排序方向,升或降序
@Field--对象属性对应mongodb的字段的名字映射,如果一致,则无需该注解
如:br/>//修改映射到数据库中的名称
@Field("parameter2_")
private String parameter2;
@DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。br/>//关联其他集合(不添加此注释时List将会保存具体的实体值,而添加了此注释List保存的是关联集合的id)
@DBRef
private List<EntityTest1> parameter5;
@Transient - 映射忽略的字段,该字段不会保存到mongodb;只作为普通的javaBean属性br/>@Transient
private Integer parameter6;
@GeoSpatialIndexed - 声明该字段为地理信息的索引。
@PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据
//声明构造函数,用于实例化查询结果数据
@PersistenceConstructor
public EntityTest(Long parameter1, String parameter2, Date parameter3, Integer parameter4, List<EntityTest1> parameter5) {
this.parameter1 = parameter1;
this.parameter2 = parameter2;
this.parameter3 = parameter3;
this.parameter4 = parameter4;
this.parameter5 = parameter5;
}