2012-06-05 62 views
2

我使用的MongoDB和Spring 3.我有以下的域對象:

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

    @Id 
    private String id; 

    private List<Post> posts; 
} 

我想一個Post添加到User,但什麼是最好/最有效的方式做到這一點?我可以看到一種以編程方式執行此操作的方法 - 找到用戶,將新的後對象添加到列表中並再次保存用戶 - 但我認爲這不是非常優雅或高效。

從文檔看來,我似乎需要使用$push運算符,但我似乎無法找到有關如何使用Spring的MongoTemplate完成此任務的任何示例。任何人都可以提供示例嗎?

回答

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」)。is(「username_1」)),new Update()。push(「posts」,newPostObject),User.class); 「我想我有點困惑,因爲我試圖靜態使用'Update'類 - 就像我在許多示例中看​​到的那樣 - 並且這不允許'push'方法。 – chrisjleu