我想对称为“ Reviews”的文档数组进行分页,但我找不到解决方法,因为我执行的代码是为我而不是对文档“ Reviews”的数组进行分页。
您尝试运行的代码
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();
文件结构
有什么办法解决这个问题?提前非常感谢您。
我对猫鼬没有太多的经验,但是我可以编写一个shell查询来对数组执行分页。因此,您可以将其集成到猫鼬中。
无法分页的原因是您正在应用skip
,limit
之后又将group
数组作为输出。因此,要将分页应用于数组本身,需要$slice
更多信息,请点击此处
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()
希望这会有所帮助:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句