Vous ne pouvez pas convertir la chaîne en un identifiant d'objet dans le pipeline, vous devrez parcourir chaque document et le convertir manuellement, en utilisant quelque chose comme (vous ne devriez pas stocker un mélange de types de toute façon, donc cela vaut probablement la peine de mettre à jour dans le long exécuter):
comment convertir une chaîne en valeurs numériques dans mongodb
quant à $lookup utilise-t-il l'index, si vous regardez les statistiques de ce blog, vous verrez que les index sont utilisés -
http://guyharrison.squarespace.com/blog/2016/7/4/join-performance-in-mongodb-32-using-lookup.html