首页 > 解决方案 > Mongoose/mongoDB:将返回的文档限制在单个文档位置附近

问题描述

我有以下 mongoose 查询,它返回同一上传者的所有视频,以创建将出现在当前播放视频右侧的视频列表。查询有效并返回视频,但如果上传者有很多视频(有些上传者超过 3,000 个),则会向前端发送太多数据,并且加载的所有视频缩略图会使页面非常慢。为了解决这个问题,我想将可以像这样返回的视频数量限制为 100。

const uploaderVideos = await Video.find(
    { uploader: currentVideo.uploader })
    .sort({ uploadDate: -1 })
    .lean()
    .exec();

通常,您只需添加.limit(100)到上述代码以限制返回的视频数量。但是,我希望返回的视频能够反映当前播放视频的位置。例如:

如果视频是上传者上传的第一个超过 100 个视频的视频

* The video
- The 99 next videos

如果视频是上传者上传的第 200 个视频,包含 1,300 个视频

- Videos 150-199
* The video (video 200)
- Videos 201-250

如果视频是上传者上传的第 70 个视频,有 100 个视频

- Videos 1-69
* The video (video 70)
- Videos 71-100

如果视频是上传者上传的最后一个视频,包含 300 个视频

- Videos 200-299
* The video (video 300)

我将如何使用猫鼬查询来完成此操作?

标签: javascriptmongodbmongoose

解决方案


推荐阅读