我有一系列的记录
[
{"id":"1", "name":"a", "user":"u1"},
{"id":"2", "name":"b", "user":"u1"},
{"id":"3", "name":"c", "user":"u1"}
]
现在,根据数据库中是否存在条目,它应该更新或插入文档。对于更新,还存在一个条件,即现有user
字段的值应该与文档中为user
提供的值相匹配。
当然,我可以在循环中运行该列表并使用
mongoOperations.save(...);
但是如果我有一个很大的列表,那么我将不得不对每个条目执行一个数据库操作,我认为这是没有效率的。有没有其他有效的方法来执行这个操作?
3条答案
按热度按时间idfiyjo81#
如果您使用CRUD存储库,则CRUD存储库提供保存()方法,该方法可用于单个实体(mongoCollection),或者您可以使用重载的save方法
它可以接受数组列表并保存数组列表对象。不需要使用循环。
您可以看到下面的示例,其中InventoryService类创建了3个库存对象,并将所有对象添加到ArrayList中,最后将其传递到库存存储库(CRUD存储库)。
Mongo存储库示例
供参考-http://docs.spring.io/autorepo/docs/spring-data-commons/1.9.1.RELEASE/api/org/springframework/data/repository/CrudRepository.html#save-java.lang.Iterable-
3mpgtkmj2#
您可以使用mongoTemplate.updateMulti()更新记录列表,如下所示
h5qlskok3#
您可以只用途: