To, co próbujesz zrobić, nie jest możliwe, biorąc pod uwagę Twój schemat. Notacja kropkowa może być wielopoziomowa, ale jeśli istnieje więcej niż jeden poziom będący tablicą, nie można jej już adresować za pomocą operatora pozycyjnego „$”.
Np. musisz zrobić:
db.my_collection.update(
{'websites.blog_posts.url': 'http://www.example.com/01.html' },
{'$set': {'websites.$.blog_posts.$.impressions': 549}},
true );
Ale posiadanie dwóch operatorów pozycji w aktualizacji nie jest możliwe, ponieważ MongoDB może określić tylko pozycję elementu w pierwszej tablicy.
Jedyną opcją jest przeprojektowanie schematu tak, aby zawierał dedykowaną kolekcję witryn użytkowników (co jest lepsze również z innych powodów w tym przypadku).