Database 如何使用聚合对mongoose中的文档数组进行分页?
我想对一个名为“Reviews”的文档数组进行分页,但我找不到方法,因为我执行的代码为我对文档进行分页,而不是对文档数组“Reviews”进行分页 您试图运行的代码 文件结构Database 如何使用聚合对mongoose中的文档数组进行分页?,database,mongodb,typescript,mongoose,Database,Mongodb,Typescript,Mongoose,我想对一个名为“Reviews”的文档数组进行分页,但我找不到方法,因为我执行的代码为我对文档进行分页,而不是对文档数组“Reviews”进行分页 您试图运行的代码 文件结构 有办法解决这个问题吗?非常感谢您。我对mongoose没有太多经验,但我可以编写一个shell查询来对数组执行分页。所以,你可以把它集成到猫鼬中 无法分页的原因是,在组之后应用了跳过和限制,这将为您提供一个数组作为输出。因此,要对数组本身应用分页,需要使用$slice进行更多读取 希望这会有所帮助:)谢谢您提供的信息和代码
有办法解决这个问题吗?非常感谢您。我对mongoose没有太多经验,但我可以编写一个shell查询来对数组执行分页。所以,你可以把它集成到猫鼬中 无法分页的原因是,在
组
之后应用了跳过
和限制
,这将为您提供一个数组作为输出。因此,要对数组本身应用分页,需要使用$slice
进行更多读取
希望这会有所帮助:)谢谢您提供的信息和代码,它对我来说非常有用。我很高兴这有帮助:)
return await this.animeModel
.aggregate()
.match({ _id: Types.ObjectId(reviewPaginateData.animeId) })
.unwind('$reviews')
.group({
_id: '$_id',
reviews: { $push: '$reviews' },
})
.sort(reviewPaginateData.sort)
.limit(reviewPaginateData.limit)
.skip(reviewPaginateData.limit * reviewPaginateData.skip)
.exec();
db.collection.aggregate([
{
$match:{
"_id":ObjectId("xyz")
}
},
{
$unwind:"$reviews"
},
{
$group:{
"_id":"$_id",
"reviews":{
$push:"$reviews"
}
}
},
{
$sort:{
sort_value:1
}
},
{
$project:{
"reviews":{
$slice:[
"$reviews",
skip_value,
limit_value
]
}
}
}
]).pretty()