2014-09-24 90 views
2

我想插入到嵌入數據的數組列表中。我嘗試了幾種方法,但無法完成。我的數據結構是這樣的。這裏給出的代碼只是一個虛設的參考,以我的原始數據結構更新mongodb中的多嵌入數據

Class X{ 
    Integer _id; 
    Arraylist<Y> objY; 
    } 

Class Y{ 
    Integer _id; 
    Arraylist<Z> objZ; 
    } 

Class Z{ 
     Integer _id; 
     String value; 
     String oldValue 
     } 

我要插入一個新的數據到objZ 我知道值類X的ID的Y. 我使用春mongotemplate 。 是否Spring Mongo模板是否支持此功能? 有人可以幫助我通過這個。

在此先感謝。

回答

3

我明白了,希望它可以幫助別人在這裏,使用aggregetion來做到這一點。

Query searchUserQuery = new Query((Criteria.where("_id").is("542264c8e4b098972a1cf60c").and("leads._id").is("2")));// _id is the id of class X 
AggregationOperation match = Aggregation.match(searchUserQuery); 
AggregationOperation group = Aggregation.group("objY"); 
Aggregation aggregation = Aggregation.newAggregation(Aggregation.unwind("objY"),match, group); 

List<objY> asd=mongoOperation.aggregate(aggregation, "Name_of_ur_collection", B.class).getMappedResults(); 
ArrayList<Z> s=asd.get(0).getObjZ(); 
s.add("New Data to be added"); 
mongoOperation.updateFirst(searchUserQuery, Update.update("objY.$.objZ", s), X.class); 

這將插入您的數組列表類Y.

感謝