spring-data-mongodb 使用笔记
2014-02-20 16:17
961 查看
1、查询部分属性
EntityRepository基础仓库类
其中“@Query(value="{ 'username' : ?0 }", fields="{ 'username' : 1, '_id' : 0}")”,value是查询条件,fields指定查询部分属性,默认查询全部属性。
2、bean的配置属性
它有以下几种注释:
@Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。
@Document - 把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。
@DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。
@Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。
@CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。
@GeoSpatialIndexed - 声明该字段为地理信息的索引。
@Transient - 映射忽略的字段,该字段不会保存到mongodb。
@PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据。
以下引用一个官方文档的例子:
Person类:
EntityRepository基础仓库类
package com.fun.website.common; import org.springframework.data.mongodb.repository.MongoRepository; public interface EntityRepository<T> extends MongoRepository<T, String> { } AccountRepository账户仓库类 package com.fun.website.module.account.manager; import org.springframework.data.mongodb.repository.Query; import com.fun.website.common.EntityRepository; public interface AccountRepository extends EntityRepository<Account> { @Query(value="{ 'username' : ?0 }", fields="{ 'username' : 1, '_id' : 0}") Account findByUsername(String username); @Query(value="{ 'type': {'$in' : ?0} }",fields="{ 'type' : 1}") public List<Account> findTest(String[] name); @Query(value="{?0:?1}") public List<Account> findTest2(Object field,Object Value); //正则测试 @Query(value="{ 'type' :{'$regex' :?0, '$options': 'i'} }") public List<Account> findTest3(String name); //日期查询 @Query(value="{ 'executeDate' :{'$gt' : ?0 } }") public List<Account> findTest4(Date date); //内部查询 findBy{字段}{条件} public List<Account> findByTypeLike(String name); public List<Account> findByTypeLike(String name, Sort sort); public List<Account> findByTypeLike(String name, Pageable pageable); }
其中“@Query(value="{ 'username' : ?0 }", fields="{ 'username' : 1, '_id' : 0}")”,value是查询条件,fields指定查询部分属性,默认查询全部属性。
2、bean的配置属性
它有以下几种注释:
@Id - 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。
@Document - 把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。
@DBRef - 声明类似于关系数据库的关联关系。ps:暂不支持级联的保存功能,当你在本实例中修改了DERef对象里面的值时,单独保存本实例并不能保存DERef引用的对象,它要另外保存,如下面例子的Person和Account。
@Indexed - 声明该字段需要索引,建索引可以大大的提高查询效率。
@CompoundIndex - 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。
@GeoSpatialIndexed - 声明该字段为地理信息的索引。
@Transient - 映射忽略的字段,该字段不会保存到mongodb。
@PersistenceConstructor - 声明构造函数,作用是把从数据库取出的数据实例化为对象。该构造函数传入的值为从DBObject中取出的数据。
以下引用一个官方文档的例子:
Person类:
@Document(collection="person") @CompoundIndexes({ @CompoundIndex(name = "age_idx", def = "{'lastName': 1, 'age': -1}") }) public class Person<T extends Address> { @Id private String id; @Indexed(unique = true) private Integer ssn; private String firstName; @Indexed private String lastName; private Integer age; @Transient private Integer accountTotal; @DBRef private List<Account> accounts; private T address; public Person(Integer ssn) { this.ssn = ssn; } @PersistenceConstructor public Person(Integer ssn, String firstName, String lastName, Integer age, T address) { this.ssn = ssn; this.firstName = firstName; this.lastName = lastName; this.age = age; this.address = address; }
相关文章推荐
- spring data mongo使用笔记
- Spring Data MongoDB : Query document(MongoDB中使用Query时的Query的编写和调用方式)
- SpringBoot使用MongoDB教程:spring-boot-starter-data-mongodb
- springboot 学习笔记【4】Spring Boot中使用Spring-data-jpa
- [Spring Data Repositories]学习笔记--使用现有的repository
- centos7安装MongoDB3.4 以及spring data mongodb的配置使用
- spring-data-elasticsearch使用笔记
- 拥抱NoSQL--谈Spring Data MongoDB的简单使用
- [Spring Data MongoDB]学习笔记--注册一个Mongo实例
- [Spring Data MongoDB]学习笔记--牛逼的MongoTemplate
- 在SPRING DATA MONGODB中使用聚合统计查询
- Spring Data MongoDB]学习笔记--牛逼的MongoTemplate
- [Spring Data MongoDB]学习笔记--_id和类型映射
- MongoDB的使用学习之(七)MongoDB的聚合查询(spring-data-mongodb两种方式)附项目源码
- 在SPRING DATA MONGODB中使用聚合统计查询
- spring-data-mongodb的MongoTemplate 使用小例子
- spring-data-mongodb使用示例
- springboot 学习笔记【3】Spring Boot中使用Spring-data-jpa
- spring data mongodb高级查询语句的使用(网上基本没资料)
- [Spring Data MongoDB]学习笔记--MongoTemplate查询操作