我的数据库里有两份文件。
因此,当$skip
为0
时,data
返回一个文档。
const data = await MyData.aggregate([
{ $limit: 1 },
{ $skip: 0 },
])
但是如果我把$skip
改为1
,data
返回空数组!
const data = await MyData.aggregate([
{ $limit: 1 },
{ $skip: 1 },
])
如果我将$limit
更改为2
,data
将返回两个文档!
const data = await MyData.aggregate([
{ $limit: 2 },
{ $skip: 0 },
])
1条答案
按热度按时间vhmi4jdf1#
秩序很重要。
如果在管道的起点没有
$match
,则会有一个隐式集合扫描,读取集合中的所有文档。当
{$limit: 1}
阶段开始时,所有文档都将在管道中,当它完成时,输出将是单个文档,该文档将传递到下一阶段。然后
{$skip: 1}
阶段跳过第一个文档,如果没有找到其他文档,则返回一个空结果集。这里的解决方案是先跳过,然后限制。