Aru*_*r V 7 mongodb mongo-java spring-data-mongodb mongotemplate mongo-java-driver
我有一个更新的对象/文档列表,我需要立即保存列表中的所有对象。
我在 MongoTemplate 中看到 save() 但它一次只能保存一个文档。有什么方法可以一次保存多个文档,或者我需要调用循环保存?
您可以使用insertAll或MongoTemplate,ReactiveMongoTemplate但必须谨慎使用。它的作用正如其名称所代表的那样——插入所有文档。如果您调用save方法,则该方法save具有乐观锁定,因此它会检查您是否不覆盖不应覆盖的文档(如果它具有注释@Version)。insertAll不检查乐观锁定,因此只要您确实想要执行插入,例如保留尚未持久化的文档,或者您不关心覆盖这些文档和乐观锁定,就可以使用它。如果您关心乐观锁定,那么您所能做的就是调用save每个文档,这将生成大量 I/O 操作,但这就是确保您将使用匹配版本更新文档所需要的。此外,您还必须记住,insertAll实际上会插入新文档,这意味着您无法使用此方法更新文档,因为您会收到重复的键异常。目前 spring mongo 缺少一个允许更新所有文档的功能(你只能“插入”它们,所以第一次保存)
这是一种方法。
mongoTemplate.getCollection("your_collection_name").insert(List<Documents>)
Run Code Online (Sandbox Code Playgroud)
您可能还想查看BulkWriteOperation类。