2014-09-19 17 views
5

Ich arbeite mit Spring MongoDB und jetzt habe ich ein Problem für das Einfügen von Werten in eine Arraylist. Hier ist meine POJO Klasse Struktur ...Wie fügt man Werte in eine innere Arraylist ein, während man die äußere Arraylist in mongodb aktualisiert?

public class Search implements Serializable { 

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

"Lead" ist eine weitere POJO Klasse, die wie ist ...

public class Lead implements Serializable { 

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

"History" ist anthere POJO Klasse, die wie ist ..

public class History implements Serializable { 

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

und das Problem ist, ich möchte Daten in trackrecords während der Aktualisierung einer Leitung einfügen. ist es möglich im Frühjahr Mongotemplate .. ?? Wenn es möglich ist, dann bitte hilf mir. Vielen Dank im Voraus

+0

Was genau ist Ihre Abfrage Bedingung für Update-Vorgang? – Wizard

+0

Diese Geschichte ist ein Tracker der Bearbeitung eines Bleis ... Wenn ich etwas in einer Blei-Klasse aktualisieren, muss ich Werte in diese Trackrecords einfügen. zum Beispiel, wenn ich leadtext aktualisiere, dann muss ich Werte in trackrecords mit den Werten changeedfield als leadtext und oldvalue als alten leadtext-Wert und new value als neuen leadtext-Wert einfügen. –

+0

Sie würden eine größere Zielgruppe erreichen, indem Sie die JSON-Darstellung Ihrer Daten anstatt Ihrer Java-Klassen veröffentlichen. Aber es scheint wirklich so zu sein, als würden Sie den Inhalt eines Arrays innerhalb eines anderen aktualisieren wollen, und die Dokumentation sollte Ihnen sagen, dass dies in den meisten Fällen nicht möglich ist. Daten und ein wenig mehr Erklärung, wenn Sie noch versuchen möchten. –

Antwort

4

Bitte versuchen Sie dies.

Angenommen leadtext kann dieses lead Element eindeutig lokalisieren.

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

Verwendung mongodb $ Push zum Einfügen oder Aktualisieren in eine bestehende Arraylist

+0

Ich habe diese Techniken ausprobiert aber nicht funktioniert .. –