Actuellement, la recherche sera effectuée pour chaque employee_details, ce qui signifie 330 000 fois, mais si nous trions et limitons d'abord avant la recherche, ce ne sera que 10 fois. Cela réduira considérablement le temps de requête.
db.getCollection('employee_details').aggregate([
{$sort : {employee_fname: -1}},
{$limit :10},
{
$lookup : {
from : "departments",
localField : "department_id",
foreignField : "_id",
as : "Department"
}
},
{ $unwind : { path: "$Department", preserveNullAndEmptyArrays: true }},
])
Après avoir essayé cela, si vous voulez même diminuer le temps de réponse, vous pouvez définir un index sur le champ de tri.
db.employee_details.createIndex( { employee_fname: -1 } )