Powinieneś użyć $skip i $limit, aby uniknąć tego błędu. dlaczego pojawia się ten błąd? musisz przeczytać link do komentarza @Alex.
db.products.aggregate([
{$skip:0},{$limit: 1000},
{$lookup:{from:"productgroups", localField:"productgroupid", foreignField:"productgroupid", as:"group"}},
{$lookup:{from:"category", localField:"categoryid", foreignField:"categoryid", as:"category"}},
{$lookup:{from:"divisions", localField:"divisionid", foreignField:"divisionid", as:"division"}},
{$project: {productpoint:1,productname:1,productcode:1,productid:1,group: { $arrayElemAt: [ "$group", 0 ]},
category: { $arrayElemAt: [ "$category", 0 ]}, division: { $arrayElemAt: [ "$division", 0 ]} }}
]);
{$skip:0},{$limit: 1000}
// dla początkowego, a następnie dla następnego razu należy pominąć:1000, limit:1000 i tak dalej. możesz go uzyskać z żądania lub za pomocą pętli lub podczas implementacji.