我有一个更新的对象/文档列表,我需要立即保存列表中的所有对象。
我在 MongoTemplate 中看到 save() 但它一次只能保存一个文档。
有什么方法可以一次保存多个文档,或者我需要循环调用保存?
您可以使用insertAll
of MongoTemplate
or ReactiveMongoTemplate
,但必须谨慎使用。它的作用正如其名称所代表的那样——插入所有文档。如果你打电话save
方法然后save
具有乐观锁定,因此它会检查您是否不覆盖不应该覆盖的文档(如果它具有@Version
注解)。insertAll
不检查乐观锁定,因此只要您确实想要执行插入操作,就可以使用它,例如持久化尚未持久化的文档,或者您不关心覆盖这些文档和乐观锁定。如果您关心乐观锁定,那么您所能做的就是调用save
对于每个文档,这将生成大量 I/O 操作,但这就是确保您将使用匹配版本更新文档所需要的。
你还必须记住这一点insertAll
实际上插入新文档,这意味着您无法使用此方法更新文档,因为您会得到重复的键异常。目前 spring mongo 缺少一个允许更新所有文档的功能(你只能“插入”它们,所以第一次保存)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)