Thật không may, hiện tại, chỉ có thể sử dụng một vị trí "$" duy nhất cho mỗi bản cập nhật. Điều này giới hạn cập nhật đối với một mảng được nhúng duy nhất, tương tự như ví dụ trong tài liệu:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Từ bài đăng của bạn, có vẻ như bạn đã tìm thấy điều này, nhưng tôi đã bao gồm liên kết vì lợi ích của bất kỳ người dùng nào khác đọc bài đăng này.)
Để cập nhật, bạn sẽ phải biết vị trí của hai trong ba điều sau:Vị trí của ban nhạc trong mảng "ban nhạc", vị trí của album trong mảng album hoặc vị trí của bản nhạc trong mảng "đường đi".
Có một yêu cầu tính năng cho chức năng này và nó được dự kiến cho phiên bản 2.3.0 (mặc dù điều này có thể thay đổi).
https://jira.mongodb.org/browse/SERVER-831 "Đối sánh nhà điều hành vị trí Mảng lồng nhau "
Hiện tại, bạn sẽ phải biết vị trí của các tài liệu con trong hai trong ba mảng:
db.music.update({genre : "Grunge", "bands.name" : "Nirvana"}, {$set:{"bands.$.albums.0.tracks.0.name":"Smells Like Teen Spirit!"}})
db.music.update({genre : "Grunge", "bands.0.albums.name" : "Nevermind"}, {$set:{"bands.0.albums.$.tracks.0.name":"Smells Like Teen Spirit!"}})
hoặc
db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})