Du kan inte konvertera strängen till ett objekt-ID inom pipelinen, du måste gå igenom varje dokument och konvertera det manuellt, med hjälp av något i stil med (du borde inte lagra en mix match av typer ändå, så det är förmodligen värt att uppdatera i det långa loppet kör):
hur man konverterar strängar till numeriska värden i mongodb
När det gäller använder $lookup index, om du tittar på statistiken från den här bloggen ser du att index används -
http://guyharrison.squarespace.com/blog/2016/7/4/join-performance-in-mongodb-32-using-lookup.html