2012-06-05 3 views
2

Я использую MongoDB и Spring 3. У меня есть следующий объект домена:

@Document(collection = "users") 
public class User { 

    @Id 
    private String id; 

    private List<Post> posts; 
} 

Я хочу добавить Post к User, но то, что это лучший/самый эффективный способ сделать это? Я вижу способ сделать это программно - найдите пользователя, добавьте новый почтовый объект в список и снова сохраните пользователя - но я не думаю, что это очень элегантно или эффективно.

Из документации кажется, что мне нужно использовать оператор $push, но я не могу найти примеров того, как это сделать с помощью MongoTemplate от Spring. Может ли кто-нибудь представить пример?

ответ

5

$ push будет правильным способом добавления нового документа в массив.

Вы можете увидеть пример кода в this presentation (слайд 22). Соответствующей линией будет:

mongoTemplate.updateFirst(collection, 
... new Query(where("_id").is(...)), 
... new Update().push("field", dbo)); 
+2

Спасибо, это помогло. Я использовал следующее: 'mongoTemplate.updateFirst (Query.query (Criteria.where (« username »). (« Username_1 »)), новое обновление(). Push (« posts », newPostObject), User.class); 'Я думаю, что я немного смутился, потому что я пытался статично ставить класс' Update', как я видел во многих примерах, и это не позволило использовать метод push. – chrisjleu