簡體   English   中英

無法在多文檔事務中創建命名空間(MongoDB 4.0、Spring Data 2.1.0、Spring Boot)

[英]Cannot create namespace in multi-document transaction(MongoDB 4.0, Spring Data 2.1.0, Spring Boot)

這個關於 Spring boot、Mongo4.0、Spring-data 應用程序的問題。

我已從 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,數據庫,集合創建和插入不會在一個函數和數據庫下發生,集合創建要顯式完成。

Spring 正在采用 MongoDB 4.0 附帶的支持多文檔事務的新功能。 該功能僅適用於現有集合,即多文檔事務不能包含會導致創建新集合的插入操作。 您應該事先創建集合以使用此功能。

因此,如果您使用 mongoose 事務startTransaction並在保存一些新文檔后,使用.save({sessions})請確保您已為此文檔創建了正確的集合。

因為,在這種情況下,Mongo 不會自動創建新集合。 檢查會話選項https://mongoosejs.com/docs/api.html#model_Model-save

在模態類的頂部使用此注釋

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM