sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:uppdaterar en array i array

Efter lite mer forskning ser det ut som att det enda sättet att modifiera arrayen inom en array skulle vara med lite extern logik för att hitta indexet för elementet jag vill ändra. Att göra detta skulle kräva att varje ändring har en sökfråga för att lokalisera indexet, och sedan en uppdateringsfråga för att ändra arrayen. Detta verkar inte vara det bästa sättet.

Länk till ett JIRA-ärende från 2010 som begär flera positionselement...

Eftersom jag alltid kommer att känna till funktionens ID, har jag valt att revidera min dokumentstruktur.

     {
    "_id" : "v5y8nggzpja5Pa7YS",
    "name" : "Example",
    "display_name" : "EX1",
    "groups" : [
        {
            "_id" : "s86CbNBdqJnQ5NWaB",
            "name" : "Group1",
            "display_name" : "G1",
            "features" : {
               "1" : {
                       type     : "blog",
                       name     : "[blog name]"
                       owner_id : "ga5YgvP5yza7pj8nS"
               }, 
            }
         },
     ]
 },

Med den nya strukturen kan ändringar göras på följande sätt:

db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});



  1. $expr frågeoperator verkar inte fungera med array dot notation

  2. Kan inte extrahera geonycklar, okänd GeoJSON-typ:{ koordinater:[ 13.42493130000003, 52.50074619999999 ]

  3. Guide till Upsert i MongoDB

  4. Meteor-appen — återställer en utplacerad apps DB