

<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.9.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb-log4j</artifactId>
<version>1.9.5.RELEASE</version>
</dependency>
</dependencies>

<mongo:mongoid="mongo" host="" port="">
<mongo:options connections-per-host="8"
threads-allowed-to-block-for-connection-multiplier="4"
connect-timeout="1000"
max-wait-time="1500"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="1500"
slave-ok="true"
write-number="1"
write-timeout="0"
write-fsync="true"
/>
</mongo:mongo>
<mongo:db-factory id="dbFactory" dbname="zpark" mongo-ref="mongo"/>
<bean id="mongoTemplate" class="...MongoTemplate">
<constructor-arg name="dbFactory" ref="mongoDbFactory"/>
</bean>
@Document
@Document(collection="t_user")
public class User implements Serializable{
.....
}
该注解用在类上用于表示类和实体类的一种映射关系。其中collection表示映射集合的名字。
@Id
@Document(collection="t_user")
public class User implements Serializable{
//默认情况下mongo的主键只能是String、BigInteger ,ObjectId
@Id
private String id;
.....
}
该注解用在属性列上用于表示该属性和mongoDB的_id属性相映射。
@Field
@Document(collection="t_user")
public class User implements Serializable{
//默认情况下mongo的主键只能是String、BigInteger ,ObjectId
@Id
private String id;
@Field(name="name")
private String name;
.....
}
该注解用在属性列上用于表示该属性和mongoDB的普通属性相映射,可以省略不写。
@Index
@Document(collection="t_user")
public class User implements Serializable{
//默认情况下mongo的主键只能是String,BigInteger ,ObjectId
@Id
private String id;
@Field(name="name")
@Index(name="name_index",unique=true,sparse=true)
private String name;
.....
}
该注解用在属性列上用于表示该属性控制索引列。
@PersistenceConstructor
@Document(collection="t_user")
public class User implements Serializable{
//默认情况下mongo的主键只能是String,BigInteger ,ObjectId
@Id
private String id;
@Field(name="name")
@Index(name="name_index",unique=true,sparse=true)
private String name;
@PersistenceConstructor
public User(String name,String address,...) {
.....
}
该注解用在构造方法上在SpringData反序列化的时候起作用。
@CompoundIndexes
@Document(collection="t_user")
@CompoundIndexes({
@CompoundIndex(name="name_age_index",unique=true,sparse=true,
def="{'name':1,'age':-1}")
})
public class User implements Serializable{
//默认情况下mongo的主键只能是String,BigInteger ,ObjectId
@Id
private String id;
@Field(name="name")
@Index(name="name_index",unique=true,sparse=true)
private String name;
@PersistenceConstructor
public User(String name,String address,...) { ...}
.....
}
创建复合索引,使用name和age属性作为联合索引列
@Transient
@Document(collection="t_user")
@CompoundIndexes({
@CompoundIndex(name="name_age_index",unique=true,sparse=true,
def="{'name':1,'age':-1}")
})
public class User implements Serializable{
//默认情况下mongo的主键只能是String,BigInteger ,ObjectId
@Id
private String id;
@Field(name="name")
@Index(name="name_index",unique=true,sparse=true)
private String name;
@Transient
private String email;
@PersistenceConstructor
public User(String name,String address,...) { ...}
.....
}
@DBRef
@Document(collection="t_user")
@CompoundIndexes({
@CompoundIndex(name="name_age_index",unique=true,sparse=true,
def="{'name':1,'age':-1}")
})
public class User implements Serializable{
//默认情况下mongo的主键只能是String,BigInteger ,ObjectId
@Id
private String id;
@Field(name="name")
@Index(name="name_index",unique=true,sparse=true)
private String name;
@Transient
private String email;
@PersistenceConstructor
public User(String name,String address,...) { ...}
.....
@DBRef(lazy=true)
private List<Book> emails;
}
表示关联关系属性,一般在保存记录的时候先保存子记录。lazy表示对子记录懒加载





本章SpringDataMongoDB的基础操作,更多精彩内容敬请订阅jiangzz_wy公众账号,感谢您的持续关注。







