At have arrays inde i arrays er næsten altid en dårlig idé af en række årsager. Jeg ville lægge kampagnerne i en dedikeret samling, så de bliver dokumenter på højeste niveau.
Når det er sagt, kan du skubbe til en meddelelsesrække af en specifik kampagne gennem :
db.members.update(
{"user_id" : "{1231mjnD-32JIjn-3213}", "campaigns.campaign_id": 3221},
{$push:{"campaigns.$.messages":{"message_id":4213122, "email":"[email protected]"}}}
)