Nie możesz przekonwertować ciągu na identyfikator obiektu w potoku, będziesz musiał przejść do każdego dokumentu i przekonwertować go ręcznie, używając czegoś takiego (i tak nie powinieneś przechowywać mieszanych dopasowań typów, więc prawdopodobnie warto aktualizować w długim bieg):
jak przekonwertować ciąg na wartości liczbowe w mongodb
jeśli chodzi o $lookup używa indeksu, jeśli spojrzysz na statystyki z tego bloga, zobaczysz, że indeksy są używane -
http://guyharrison.squarespace.com/blog/2016/7/4/join-performance-in-mongodb-32-using-lookup.html