I also faced this issue, and I tried several ways but didn't solved. Then I tried the same thing using aggregate, then it works perfectly, so maybe this is a bug from mongoose referencing. The low level aggregation pipeline does it correctly, so its some internal issue I think.