sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Update Deep Array

Tyvärr är det för närvarande bara möjligt att använda en enda "$" position per uppdatering. Detta begränsar uppdateringen till en enda inbäddad array, liknande exemplet i dokumentationen:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Från ditt inlägg ser det ut som att du redan har gjort det hittade detta, men jag har inkluderat länken till förmån för alla andra användare som läser det här inlägget.)

För att göra uppdateringen måste du känna till positionen för två av följande tre:Bandets position i "bands"-arrayen, positionen för albumet i albumarrayen eller positionen för spåret i arrayen "spår".

Det finns en funktionsbegäran för denna funktionalitet, och den är planerad till version 2.3.0 (även om detta kan komma att ändras).
https://jira.mongodb.org/browse/SERVER-831 "Positionell operatörsmatchning Kapslade arrayer"

För närvarande måste du känna till underdokumentens position i två av de tre arrayerna:

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!"}})

eller

db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})



  1. Laravel Caching med Redis är väldigt långsam

  2. Hur man får tillbaka originaldokumentet efter aggregering

  3. MongoDB utskriftsavstånd mellan två punkter

  4. C# mongodb - hur man uppdaterar kapslade arrayelement