我在使用Java Spring存儲庫(these ones)時遇到了一些問題。我有一個具有自定義ID字段的集合(因爲我的應用程序中存在一個限制,使我無法使用MongoDB ObjectID)以及一些數據。看起來,CrudRepository接口中內置的save()方法只會在使用ObjectID進行保存時對數據庫對象進行更新,否則會添加對象的新實例。由於我使用自定義ID字段,這似乎意味着我必須先刪除舊對象(如果存在),然後插入帶有更新字段的全新對象。很明顯,這是非常緩慢的(我必須做3個數據庫調用:一個查看對象是否存在,一個刪除它,一個插入它,而不是1),所以我想確保:使用Java Spring存儲庫更新MongoDB集合
有沒有辦法使用Java Spring存儲庫在不使用對象的ObjectID的情況下對集合進行更新?謝謝。
感謝您的回答!問題是MongoRepository還有另一個功能,我想在我的應用程序中利用MongoOperations(和MongoTemplate)似乎不允許的功能,所以我需要使用MongoRepository。我明白,儘管使用其他方法,這是相對微不足道的。 – Ertai87
請你詳細說明一下嗎? – vine
實際上使用mongoOperation並不禁止你繼續使用MongoRepository。實際上,MongoRepository在內部使用了mongoOperations。因此,對於更多受控的操作,Spring Data有意設計爲暴露MongoOperations以在自定義dao impl模式中使用它。請遵循這裏的相關討論,http://stackoverflow.com/questions/17035419/spring-data-mongodb-custom-implementation-propertyreferenceexception 請注意,該示例使用MongoTemplate,它也與MongoOperation相同,因爲MongoTemplate是一個子類MongoOperation的 – vine