Mongodb 如果一个结果匹配,$limit是否停止获取?

Mongodb 如果一个结果匹配,$limit是否停止获取?,mongodb,mongoose,mongoose-schema,mongoose-populate,Mongodb,Mongoose,Mongoose Schema,Mongoose Populate,我不清楚美元的总限额是多少。我使用聚合是因为我需要填充我的项目,但我不能在findOne中完成(不知道为什么,但它总是不返回任何内容) return Item.aggregate( [ {$match:{{u id:mongoose.Types.ObjectId(id)}, {$limit:1}, { $lookup:{ 来自:“变体”, localField:“\u id”, foreignField:'项目', as:‘变体’ } } ] ).then(result=>{console.lo

我不清楚美元的总限额是多少。我使用聚合是因为我需要填充我的项目,但我不能在findOne中完成(不知道为什么,但它总是不返回任何内容)

return Item.aggregate(
[
{$match:{{u id:mongoose.Types.ObjectId(id)},
{$limit:1},
{
$lookup:{
来自:“变体”,
localField:“\u id”,
foreignField:'项目',
as:‘变体’
}
}
]
).then(result=>{console.log(result)});
在这种情况下,是在一个结果匹配时停止抓取,还是$limit只保留总结果中的一项?
在第二种情况下,当项目匹配时,如何停止提取

$limit用于限制聚合管道中传递到下一阶段的项目数。假设您的$match stage通过
{status:'active'}
选择了记录,它生成了100万条记录,您只需要将前10条记录传递到下一个阶段,或者将这10条记录返回到客户端,然后您需要添加一个
{$limit:10}
阶段

但在您的情况下,因为您是通过objectId进行匹配的,所以不需要$limit阶段,因为objectId是唯一的,并且只有一条记录具有该Id,所以您可以删除它


此外,您不能使用
find
界面进行检索,因为它不允许您与其他集合进行联接/查找。find接口用于直接从单个集合检索记录。因此,您需要在查找等场景中使用聚合框架。

$limit用于限制聚合管道中传递到下一阶段的项目数量。假设您的$match stage通过
{status:'active'}
选择了记录,它生成了100万条记录,您只需要将前10条记录传递到下一个阶段,或者将这10条记录返回到客户端,然后您需要添加一个
{$limit:10}
阶段

但在您的情况下,因为您是通过objectId进行匹配的,所以不需要$limit阶段,因为objectId是唯一的,并且只有一条记录具有该Id,所以您可以删除它

此外,您不能使用
find
界面进行检索,因为它不允许您与其他集合进行联接/查找。find接口用于直接从单个集合检索记录。因此,您需要将聚合框架用于查找等场景