sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur flyttar man ett objekt i en MongoDB-array?

Här är ett annat sätt att flytta ett element till en ny position som kommer att byta positionerna för it2 och it3...

  1. Ta bort elementet från arrayen med $pull [ Docs Here ] .

    update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
    
  2. Sätt in elementet i den nya positionen med $push. [ Dokument här ] .

    update({"name": "myDoc"}, { 
        $push: { 
            "items" : { $each : [ "it3" ], $position : 1 }
        }
    });
    

När ska användas

Pouzors svar på att använda $set kan vara enklare och fungera bättre för många användningsfall.

Men om flera användare samtidigt lägger till, tar bort och ordnar om arrayobjekt innebär denna metod att ni inte kommer att skriva över varandras ändringar.

Det kan också vara mer effektivt i vissa fall (t.ex. stora arrayelement) eftersom mindre data skrivs.

GOTCHA:Lista över listor

Om listan du omarrangerar är en array av arrayer måste du använda operatorn $all med $pull [ Dokument här ]

Ta det här exemplet:

{
    name: "myDoc",
    items: [  
        [ "User", "dofij20r91dj93" ],   
        [ "User", "239vjvidjfsldf" ], 
        [ "User", "2309jvdsjdkk23" ]
    ]
}

Här är koden för att ta bort den första listan från listan med listor:

update({"name": "myDoc"}, {
    $pull: {
        "items" : {
            $all : [ "User", "dofij20r91dj93" ]  // the sub-list to $pull
        }
    }
});

Lista över objekt

Det här är lätt. Säg att du har följande lista med objekt:

{
    name: "myDoc",
    items: [  
        { type: "User",  id: "dofij20r91dj93", name: "Dave" },   
        { type: "Group", id: "239vjvidjfsldf", name: "Accountants" }, 
        { type: "User",  id: "2309jvdsjdkk23", name: "Toni" }
    ]
}

Du kan $dra så här:

update({"name": "myDoc"}, {
    $pull: { 
        "items" : { type: "User", id: "dofij20r91dj93" } 
    }
});


  1. kan inte dela':dålig URI(är inte URI?):

  2. Hur man integrerar Pyramid 1.1 och Mongo DB - så få rader som möjligt

  3. Exkludera fält från resultatet i MongoDB monk

  4. Migrering från MongoDB till PostgreSQL Groovy Application