无法在多文档交易中创建命名空间(MongoDB 4.0,Spring Data 2.1.0,Spring Boot)

时间:2018-10-01 06:36:28

标签: java mongodb spring-boot spring-data spring-data-mongodb

关于Spring引导,Mongo4.0,Spring数据应用程序的问题。

我已从MongoDB 3.6.x升级到MongoDB 4.0,并将Spring data 2.0.x升级到Spring-data 2.1.0,以便在将数据插入多个文档时进行事务管理。但是在这里,在创建数据库,收集并将文档插入到收集中时,我会遇到这个问题。

问题

Cannot create namespace sampledb_200.demo in multi-document transaction 

这里 sampldb_200 是数据库名称,而 demo 是集合名称。

在早期的mongodb3.6.X版本(Spring Data 2.0.x)中,即使数据库和集合都不存在,我也可以同时进行数据库,集合创建,文档插入。

在一个功能和数据库下,不会使用Spring Data 2.1.0,MongoDB 4.0,数据库,集合创建和插入,而是显式地完成集合创建。

3 个答案:

答案 0 :(得分:3)

Spring正在拥抱MongoDB 4.0附带的一项新功能,该功能支持多文档事务。该功能仅适用于现有集合,即,多文档事务不能包含将导致创建新集合的插入操作。您应该先创建自己的收藏集才能使用此功能。

答案 1 :(得分:0)

在模态类的顶部使用此注释

@org.springframework.data.mongodb.core.mapping.Document("DEMO")

答案 2 :(得分:0)

因此,如果您使用猫鼬交易startTransaction,并且在保存了一些新文档之后,请使用.save({sessions})确保该文档的创建正确。

在这种情况下,Mongo不会自动创建新集合。 检查会话选项https://mongoosejs.com/docs/api.html#model_Model-save