Database

[{"_id":1,"name":"John","contacts":[{"name":"henry","age":"22"},{"name":"merry","age":"12"}]},{"_id":2,"name":"John2","contacts":[{"name":"henry","age":"2"},{"name":"merry","age":"22"}]},{"_id":3,"name":"John2","contacts":[{"age":"not number"}]}]

Query

db.collection.aggregate([{"$match":{"contacts":{"$ne":null},"$expr":{"$in":[true,{"$map":{"input":"$contacts","in":{"$lte":[{"$convert":{"input":"$$this.age","to":"int","onError":"","onNull":""}},30]}}}]}}}])

Result