2014-09-19 57 views
5

我正在使用Spring MongoDB,現在我正面臨着將值插入到數組列表中的問題。這裏是我的POJO類結構...如何在更新mongodb中的外部數組列表時在內部數組列表中插入值?

public class Search implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    private String id; 
    private String searchkey; 
    private ArrayList<Lead> leads; 
} 

「鉛」 是另一個POJO類,這是像...

public class Lead implements Serializable { 

private static final long serialVersionUID = 1L; 
private String leadtext; 
private String address; 
private ArrayList<History> trackrecords; 
} 

「歷史」 是花葯POJO類,這是如..

public class History implements Serializable { 

private static final long serialVersionUID = 1L; 
private String id; 
private String changedfield; 
private String oldvalue; 
private String newvalue; 
} 

和問題是我想插入數據到軌道記錄,同時更新一個線索。在春天的mongotemplate中可能嗎???如果可能的話請幫助我。謝謝你在前進

+0

什麼是更新操作的查詢條件? – Wizard 2014-09-19 08:55:43

+0

這個歷史是編輯領導的追蹤器......如果我更新領導類中的任何東西,我必須在該記錄中插入值。例如,如果我更新leadtext,那麼我必須在trackrecords中插入值,其值作爲leadtext和oldvalue作爲舊的leadtext值和新值作爲新的leadtext值更改爲字段值。 – 2014-09-19 09:36:49

+0

通過發佈數據的JSON表示而不是Java類,您可以覆蓋更廣泛的受衆羣體。但是看起來好像你要求更新另一個數組的內容,並且文檔應該告訴你這在大多數情況下是不能完成的。數據和更多的解釋,如果你仍然想嘗試。 – 2014-09-19 09:57:25

回答

4

請試試這個。

假設leadtext可以找到該唯一的lead元素。

Query query = new Query().addCriteria(Query.where("searchkey").is(searchkey).and("leads.leadtext").is(leadtext)); 
Update update = new Update().push("leads.$.trackrecords", trackrecord); 
mongoTemplate.updateFirst(query, update, Search.class); 
2

使用MongoDB的$推插入或更新到現有的ArrayList

+0

我已經嘗試了這些技術,但不工作.. – 2014-09-19 08:52:33