带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))