带Spring数据的切片投影MongoDB ReactiveMongoRepository?
我有一个名为带Spring数据的切片投影MongoDB ReactiveMongoRepository?,spring,mongodb,spring-boot,kotlin,spring-data-mongodb,Spring,Mongodb,Spring Boot,Kotlin,Spring Data Mongodb,我有一个名为myCollection的集合,其中包含以下格式的文档: { "_id" : "1", "myArray" : [ { x: 1, y: "a" }, { x: 2, y: "b" }, { x: 3, y: "c" }, { x: 4, y: "d" }, { x: 5, y: "e" }] } 我想做的是构造一个查询,返回myArray中某些元素的一个值作为投影 也就是说,我的文档定义如下: @Document(collection = "myCollectio
myCollection
的集合,其中包含以下格式的文档:
{
"_id" : "1",
"myArray" : [ { x: 1, y: "a" }, { x: 2, y: "b" }, { x: 3, y: "c" }, { x: 4, y: "d" }, { x: 5, y: "e" }]
}
我想做的是构造一个查询,返回myArray
中某些元素的一个值作为投影
也就是说,我的文档定义如下:
@Document(collection = "myCollection")
data class MyDocument(@Id val myId : String, val myArray : List<MyItem>)
data class MyItem(val x: Int, val y: String)
{
"find" : "myCollection",
"filter" : {
"_id" : "1"
},
"projection" : {
"myArray" : 1
},
"skip" : 2,
"limit" : 2,
"batchSize" : 256
}
现在,我想创建一个函数,该函数为具有特定id的MyDocument
返回给定偏移量和项目计数(或“页面”)的MyItem
列表
这是我尝试过的(使用):
它返回一个Flux
,其中包含MyItem(x=3,y=“c”)
和MyItem(x=4,y=“d”)
,但它是空的
生成的MongoDB查询如下所示:
@Document(collection = "myCollection")
data class MyDocument(@Id val myId : String, val myArray : List<MyItem>)
data class MyItem(val x: Int, val y: String)
{
"find" : "myCollection",
"filter" : {
"_id" : "1"
},
"projection" : {
"myArray" : 1
},
"skip" : 2,
"limit" : 2,
"batchSize" : 256
}
我怀疑的是,Pageable
实例在聚合(MyDocument
)上运行,而不是在myArray
字段中运行,这就是为什么我怀疑我想以某种方式使用操作符的原因
我怎样才能做到这一点?如果使用不起作用,则我可以使用。我通过更改以下内容来解决此问题:
interface MyRepository : ReactiveMongoRepository<MyDocument, String> {
fun findByMyId(myId: String, pageable: Pageable): Flux<MyArrayProjection>
}
myRepository.findByMyId("1", arrayOf(1, 2))