Puede incluir ambos términos de identificación en una sola consulta y la proyección de un solo elemento seguirá funcionando:
Person.findOne({_id: personId, 'things.id': 2}, {'things.$': 1},
function(err, person) { ...
Puede incluir ambos términos de identificación en una sola consulta y la proyección de un solo elemento seguirá funcionando:
Person.findOne({_id: personId, 'things.id': 2}, {'things.$': 1},
function(err, person) { ...