Nella tua query che funziona, il $elemMatch
l'oggetto non è un'altra condizione della query, ma è il parametro di selezione del campo di output (cioè la proiezione) da find
.
Per fare lo stesso in Mongoose, faresti qualcosa del tipo:
PatientsModel.find({patientId: '123'}, {diet: {$elemMatch: {'status': 'A'}}}, cb)
O
PatientsModel
.where('patientId', '123')
.select({diet: {$elemMatch: {'status': 'A'}})
.exec(cb);