typescript Nodejs:mongoose跳过聚合无法正确工作

vxf3dgd4  于 2022-12-30  发布在  TypeScript
关注(0)|答案(1)|浏览(108)

我的数据库里有两份文件。
因此,当$skip0时,data返回一个文档。

const data = await MyData.aggregate([
    { $limit: 1 },
    { $skip: 0 },
  ])

但是如果我把$skip改为1data返回空数组!

const data = await MyData.aggregate([
    { $limit: 1 },
    { $skip: 1 },
  ])

如果我将$limit更改为2data将返回两个文档!

const data = await MyData.aggregate([
    { $limit: 2 },
    { $skip: 0 },
  ])
vhmi4jdf

vhmi4jdf1#

秩序很重要。
如果在管道的起点没有$match,则会有一个隐式集合扫描,读取集合中的所有文档。
{$limit: 1}阶段开始时,所有文档都将在管道中,当它完成时,输出将是单个文档,该文档将传递到下一阶段。
然后{$skip: 1}阶段跳过第一个文档,如果没有找到其他文档,则返回一个空结果集。
这里的解决方案是先跳过,然后限制。

相关问题