Database 如何使用聚合对mongoose中的文档数组进行分页?

Database 如何使用聚合对mongoose中的文档数组进行分页?,database,mongodb,typescript,mongoose,Database,Mongodb,Typescript,Mongoose,我想对一个名为“Reviews”的文档数组进行分页,但我找不到方法,因为我执行的代码为我对文档进行分页,而不是对文档数组“Reviews”进行分页 您试图运行的代码 文件结构 有办法解决这个问题吗?非常感谢您。我对mongoose没有太多经验,但我可以编写一个shell查询来对数组执行分页。所以,你可以把它集成到猫鼬中 无法分页的原因是,在组之后应用了跳过和限制,这将为您提供一个数组作为输出。因此,要对数组本身应用分页,需要使用$slice进行更多读取 希望这会有所帮助:)谢谢您提供的信息和代码

我想对一个名为“Reviews”的文档数组进行分页,但我找不到方法,因为我执行的代码为我对文档进行分页,而不是对文档数组“Reviews”进行分页

您试图运行的代码

文件结构


有办法解决这个问题吗?非常感谢您。

我对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()