Database

db={"A":[{"_id":ObjectId("582abcd85d2dfa67f44127e0"),"level":"super","dataReference":{"$ref":"B","$id":ObjectId("5b618a570550de0021aaa2ef")}}],"B":[{"_id":ObjectId("5b618a570550de0021aaa2ef"),"role":"admin"}]}

Query

db.A.aggregate([{"$match":{"level":"super"}},{"$addFields":{"B":{"$reduce":{"input":{"$objectToArray":"$dataReference"},"initialValue":null,"in":{"$cond":[{"$eq":[{"$type":"$$this.v"},"objectId"]},"$$this.v","$$value"]}}}}},{"$lookup":{"from":"B","localField":"B","foreignField":"_id","as":"B"}},{"$match":{"$and":[{"B.role":{"$regex":"admin","$options":""}}]}}])

Result