MongoDB updating fields in nested array

database, mongodb, php

Solution

You can't. The positional operator is only available for the first array in your document hierarchy. As such you cannot manipulate individual elements of deeper nester arrays.

It's a known issue and is scheduled for development here : https://jira.mongodb.org/browse/SERVER-831

Until that time you'll have to normalize your schema a bit I'm afraid.

Problem

MongoDB updating fields in nested array How can I set "play" to "play photo" in the `photos` array? I only know its `_id`. ``` "_id": ObjectId("4f41a5c7c32810e404000000"), "albums": [ { "_id": ObjectId("4f545d1bc328103812000000"), "name": "album1" , "photos":[{ "_id": ObjectId("4f545d1bc328103812d00000"), "name":"travel photo" },{ "_id": ObjectId("4f545d1bc328103812c00000"), "name":"play" }] }, { "_id": ObjectId("4f545f56c328103c12000000"), "name": "album2" }, { "_id": ObjectId("4f545f68c328103012000000"), "name": "album3" }, { "_id": ObjectId("4f546642c328103c12000001"), "name": "album4" }] ```

Original source