Non puoi convertire la stringa in un ID oggetto all'interno della pipeline, dovrai esaminare ogni documento e convertirlo manualmente, usando qualcosa del tipo (non dovresti comunque memorizzare una corrispondenza mista di tipi, quindi probabilmente vale la pena aggiornarlo a lungo corri):
come convertire una stringa in valori numerici in mongodb
come per $lookup usa l'indice, se guardi le statistiche di questo blog vedrai che vengono utilizzati gli indici -
http://guyharrison.squarespace.com/blog/2016/7/4/join-performance-in-mongodb-32-using-lookup.html