Na sua consulta que funciona, o
$elemMatch
object não é outra condição de consulta, mas é o parâmetro de seleção do campo de saída (ou seja, projeção) para find
. Para fazer o mesmo no Mongoose, você faria algo como:
PatientsModel.find({patientId: '123'}, {diet: {$elemMatch: {'status': 'A'}}}, cb)
OU
PatientsModel
.where('patientId', '123')
.select({diet: {$elemMatch: {'status': 'A'}})
.exec(cb);