2014-09-19 5 views
5

Я работаю с Spring MongoDB, и теперь у меня возникла проблема с введением значений в arraylist. Вот мой класс POJO структура ...Как вставлять значения во внутренний arraylist при обновлении внешнего arraylist в 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

+0

эта история является трекером редактирования руководства ... если я обновляю что-либо в ведущем классе, мне нужно вставлять значения в эти дорожки. например, если я обновляю leadtext, тогда мне нужно вставлять значения в trackrecords со значениями changefield как leadtext и oldvalue в качестве старого значения leadtext, а новое значение - как новое значение leadtext. –

+0

Вы бы охватили более широкую аудиторию, разместив JSON-представление своих данных, а не своих классов Java. Но действительно кажется, что вы просите обновить содержимое массива внутри другого, и в документации вам следует сказать, что этого не может быть сделано в большинстве случаев. Данные и немного больше объяснений, если вы все еще хотите попробовать. –

ответ

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

Я пробовал эти методы, но не работал. –