sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Update Deep Array

Desværre er det på nuværende tidspunkt kun muligt at bruge en enkelt "$" position pr. opdatering. Dette begrænser opdateringen til et enkelt indlejret array, svarende til eksemplet i dokumentationen:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator(Fra dit indlæg ser det ud til, at du allerede har fandt dette, men jeg har inkluderet linket til gavn for alle andre brugere, der læser dette indlæg.)

For at foretage opdateringen skal du kende positionen af ​​to ud af følgende tre:Bandets position i "bands"-arrayet, albummets position i album-arrayet eller positionen af ​​sporet i "spor"-arrayet.

Der er en funktionsanmodning for denne funktionalitet, og den er beregnet til version 2.3.0 (selvom dette kan ændres).
https://jira.mongodb.org/browse/SERVER-831 "Positionel operatørmatching Indlejrede arrays"

Indtil videre skal du kende underdokumenternes position i to ud af de tre arrays:

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. At bestemme, hvorfor Redis modtager en SIGTERM hvert minut eller andet

  2. Understøtter azur ting som mongodb og redis?

  3. MongoDB:ubetingede opdateringer?

  4. Hvordan virker redis for at hjælpe i session persistens i azurblå vindue