Wat u probeert te doen is niet mogelijk gezien uw schema. Puntnotatie kan meerdere niveaus hebben, maar als er meer dan één niveau is dat een array is, kan het niet langer worden geadresseerd met de positionele operator '$'.
bijv. je zou moeten doen:
db.my_collection.update(
{'websites.blog_posts.url': 'http://www.example.com/01.html' },
{'$set': {'websites.$.blog_posts.$.impressions': 549}},
true );
Maar het is niet mogelijk om twee positie-operators in de update te hebben, omdat MongoDB alleen de positie van een element in de eerste array kan bepalen.
Uw enige optie is om uw schema opnieuw te ontwerpen om een speciale verzameling gebruikerswebsites te hebben (wat in dit geval ook om andere redenen beter is).