Những gì bạn đang cố gắng làm không thể thực hiện được với lược đồ của bạn. Ký hiệu dấu chấm có thể là nhiều cấp nhưng nếu có nhiều hơn một cấp là một mảng, nó không thể được giải quyết bằng cách sử dụng toán tử vị trí '$'.
Ví dụ. bạn cần làm:
db.my_collection.update(
{'websites.blog_posts.url': 'http://www.example.com/01.html' },
{'$set': {'websites.$.blog_posts.$.impressions': 549}},
true );
Nhưng không thể có hai toán tử vị trí trong bản cập nhật vì MongoDB chỉ có thể xác định vị trí của một phần tử trong mảng đầu tiên.
Lựa chọn duy nhất của bạn là thiết kế lại giản đồ của bạn để có một bộ sưu tập dành riêng cho các trang web của người dùng (trong trường hợp này cũng tốt hơn vì các lý do khác).