To, o co se snažíte, není možné vzhledem k vašemu schématu. Tečkový zápis může být víceúrovňový, ale pokud existuje více než jedna úroveň, která je polem, nelze ji již řešit pomocí pozičního operátoru '$'.
Např. budete muset udělat:
db.my_collection.update(
{'websites.blog_posts.url': 'http://www.example.com/01.html' },
{'$set': {'websites.$.blog_posts.$.impressions': 549}},
true );
Ale mít dva operátory pozic v aktualizaci není možné, protože MongoDB může určit pouze pozici prvku v prvním poli.
Jedinou možností je přepracovat schéma tak, aby mělo vyhrazenou kolekci uživatelských webů (což je v tomto případě lepší i z jiných důvodů).