2014-09-19 52 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