Spring-Mongo:将mongo文档字段/ s映射到实体的BasicDBObject的BasicDBObject / Map

时间:2017-02-22 10:34:59

标签: spring mongodb mapping

我有一个实体ProjectCycle映射到mongo DB集合ProjectCycle。我正在尝试检索2个字段_idStatus。我可以像以下

一样检索两者
@Document(collection="ProjectCycle")
public class ProjectCycle {
    @Id
    private String id;
    @Field("Status")
    private String status;
//getters and setters
}
  

Application.java

    Query query = new Query();
    query.fields().include("Status");
    Criteria criteria = new Criteria();
    criteria.and("_id").is("1000");
    query.addCriteria(criteria);
    Iterable<ProjectCycle> objectList = mongoOperations.find(query, ProjectCycle.class);
    for(ProjectCycle obj : objectList) {
        System.out.println("_id "+obj.getId());
        System.out.println("status "+obj.getStatus());
    }
  

输出

_id 1000
status Approved

但问题是,当我使用带有字段private DBObject basicDbObject;的实体而不是private String status;时,我的值为null而不是Approved

我尝试过以下

public class ProjectCycle {
    @Id
    private String id;
    private DBObject basicDbObject;
    //getter & setter
}

我想要实现的是,该集合&#39; ProjectCycle&#39;非常大,创建一个对应的POJO是很安静的。另外我只是从mongoDB读取数据。所以创造整个POJO是浪费时间和乏味的时间。

  • 如何实现从mongo Collection到实体的任何字段/字段之间的映射?
  • 是否可以为查询返回的字段创建Map<String, BasicDBObject> objectMap;?我正在使用Spring-data-mongodb
  

版本详情

     

Spring 4.0.7.RELEASE

     

spring-data-mongodb 1.7.2.RELEASE

1 个答案:

答案 0 :(得分:1)

尝试映射您的查询,如下所示。

{
    # NF holds the number of fields in the record
    for(i=2;i<=NF;i++){
        if($i==$1"/"$1){
            $i="REP"
        }
    }
}

1 # Evaluates to true. awk will print the line