mongo更新数组字段,MongoDB更新嵌套数组中的字段

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"

}]

解决方案

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.