How to retrieve parent document based on subdocument values in Mongoose?
It seems the $elemMatch
is the query operator to solve this problem. The actual query should be written as follows:
Parent.findOne({ 'children': { $elemMatch: { 'field': 'Family Name', 'value': 'Smith' } } }, fn ...)
Is there a reason you use field, value structure on the child documents? It would be easier to simply use the key as the field, like {"FamilyName": "Smith"}
. This would allow something like:
Parent.findOne({'children.FamilyName': 'Smith'}, function(err, doc){...});