Det du försöker göra är inte möjligt med tanke på ditt schema. Punktnotering kan vara på flera nivåer men om det finns mer än en nivå som är en array kan den inte längre adresseras med positionsoperatorn '$'.
T.ex. du skulle behöva göra:
db.my_collection.update(
{'websites.blog_posts.url': 'http://www.example.com/01.html' },
{'$set': {'websites.$.blog_posts.$.impressions': 549}},
true );
Men att ha två positionsoperatorer i uppdateringen är inte möjligt eftersom MongoDB bara kan bestämma positionen för ett element i den första arrayen.
Ditt enda alternativ är att göra om ditt schema för att ha en dedikerad samling av användarwebbplatser (vilket är bättre av andra skäl också i det här fallet).