使用Spring数据和QueryDSL对MongoDb查询进行投影

时间:2012-07-27 13:32:23

标签: spring mongodb projection spring-data

我有一个Spring MVC / Spring Data / Mongo数据库应用程序。 我根据spring数据文档设置了我的环境,我的存储库工作正常(我可以用谓词执行查询)

我想知道是否可以在进行投影时执行类型安全查询(使用Spring Data和QueryDSL)(我只想要一个非常大的文档的几个字段)。

QueryDSL文档为Hibernate提供了一个示例,但声明它可以在所有模块QueryDSL Documentation 中完成(但我无法找到如何使用Mongo)

这是hibernate的代码片段

class CustomerDTO {

  @QueryProjection
  public CustomerDTO(long id, String name){
     ...
 }

 QCustomer customer = QCustomer.customer;
 JPQLQuery query = new HibernateQuery(session);
 List<CustomerDTO> dtos = qry.from(customer).list(new QCustomerDTO(customer.id,    customer.name));     

任何想法?

2 个答案:

答案 0 :(得分:1)

目前不支持此功能。随意在我们的Issue tracker中添加一张票。

Querydsl的Lucene和Mongodb模块仅支持来自查询根的直接投影,但是对于自定义投影,可以找出一些东西。

答案 1 :(得分:0)

我刚刚建立了一个这样的投影:

Criteria c1 = Criteria.where("field.name").is("val")
Criteria projection = Criteria.where("field").is(1)
BasicQuery query = new BasicQuery(c1.getCriteriaObject(), projection.getCriteriaObject())