如何在 Spring Boot 中的存储库中的 @Aggregation 注释中添加 "allowDiskUse"?
How to add "allowDiskUse" in @Aggregation annotation in repository in Spring Boot?
我在 MyRepository.kt
文件中编写了一个聚合,该文件从后端的 MongoDataRetriever.kt
文件中调用。
MyRepository.kt
文件:
import org.springframework.data.mongodb.repository.Aggregation
import org.springframework.data.mongodb.repository.MongoRepository
@Aggregation(pipeline = [
"{ $match: { 'objName' : { $exists: true } } }",
"{ $sort: { 'addedDate': -1 } }"
])
fun getLatestObjectsWithLatestData(): List<MyDocument>
和MongoDataRetriever.kt
文件:
override fun getLatestObjects(): List<MyObj> {
return myRepository.getLatestObjectsWithLatestData().map { it.toMyObj() }
}
以上 aggregation
失败并出现错误:
message: "Command failed with error 16819 (Location16819): 'Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in.' on serv...
所以,似乎添加 allowDiskUse = true
或类似的东西是可能的解决方法,但是如何在上面的注释中添加它?
您可以在您的方法中添加@Meta(allowDiskUse = true) 注解。
@Aggregation(pipeline = [
"{ $match: { 'objName' : { $exists: true } } }",
"{ $sort: { 'addedDate': -1 } }"
])
@Meta(allowDiskUse = true)
fun getLatestObjectsWithLatestData(): List<MyDocument>
我在 MyRepository.kt
文件中编写了一个聚合,该文件从后端的 MongoDataRetriever.kt
文件中调用。
MyRepository.kt
文件:
import org.springframework.data.mongodb.repository.Aggregation
import org.springframework.data.mongodb.repository.MongoRepository
@Aggregation(pipeline = [
"{ $match: { 'objName' : { $exists: true } } }",
"{ $sort: { 'addedDate': -1 } }"
])
fun getLatestObjectsWithLatestData(): List<MyDocument>
和MongoDataRetriever.kt
文件:
override fun getLatestObjects(): List<MyObj> {
return myRepository.getLatestObjectsWithLatestData().map { it.toMyObj() }
}
以上 aggregation
失败并出现错误:
message: "Command failed with error 16819 (Location16819): 'Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in.' on serv...
所以,似乎添加 allowDiskUse = true
或类似的东西是可能的解决方法,但是如何在上面的注释中添加它?
您可以在您的方法中添加@Meta(allowDiskUse = true) 注解。
@Aggregation(pipeline = [
"{ $match: { 'objName' : { $exists: true } } }",
"{ $sort: { 'addedDate': -1 } }"
])
@Meta(allowDiskUse = true)
fun getLatestObjectsWithLatestData(): List<MyDocument>