Структура агрегирования имеет тенденцию быть очень сложной. Я бы порекомендовал любому, кто пытается освоить его, сначала изобразить вывод в своей голове (или создать SQL-запрос, если он работает лучше).
Тем не менее, разница в производительности: скажем, 10 вместо 1, для объяснения. если вы прочитали первый запрос,
db.collection.find({}).limit(10).sort({ createdAt: 1 })
собирается отфильтровать 10 элементов и отсортировать их. Второй собирается отсортировать все * элементы в коллекции и затем отфильтровать их до 10:
db.collection.aggregation([
{ $sort: { createdAt: 1 }},
{ $limit: 10 }
])
Вы можете посмотреть этот курс с mongouniversity.com
Надеюсь, это поможет вам понять:)