Att ha arrayer i arrayer är nästan alltid en dålig idé av flera anledningar. Jag skulle lägga kampanjerna i en dedikerad samling så att de blir dokument på högsta nivå.
Som sagt, du kan skicka till en meddelandeuppsättning för en specifik kampanj genom :
db.members.update(
{"user_id" : "{1231mjnD-32JIjn-3213}", "campaigns.campaign_id": 3221},
{$push:{"campaigns.$.messages":{"message_id":4213122, "email":"[email protected]"}}}
)