2017-02-22 101 views
1

我有一個映射到mongo DB集合ProjectCycle的實體ProjectCycle。我試圖檢索2個字段,_idStatus。我能夠檢索既像下面Spring-Mongo:映射mongo文檔字段/ s到BasicDBObject /實體的BasicDBObject映射

@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 String status;我得到的值作爲null而不是Approved

我試圖像下面

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

我想實現的是,集「ProjectCycle」是非常大的,創造一個相應的POJO很安靜。另外我只是從mongoDB讀取數據。所以創建整個POJO是浪費時間和繁瑣。

  • 我如何實現從mongo Collection到實體的任何字段/字段之間的映射?
  • 是否可以創建一個Map<String, BasicDBObject> objectMap;從查詢返回的字段?我正在使用Spring-data-mongodb

版本細節

春4.0.7.RELEASE

彈簧數據的MongoDB 1.7.2.RELEASE

回答

1

嘗試映射你的查詢像下面。

Iterable<BasicDBObject> objectList = mongoOperations.find(query, BasicDBObject.class, collectionname); 

for(BasicDBObject obj : objectList) { 
    System.out.println("_id "+obj.get("id")); 
    System.out.println("status "+obj.get("status")); 
} 
+0

太棒了!這就是我正在尋找的... – RahulArackal