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

Hvordan flytter man et element i et MongoDB-array?

Her er en anden måde at flytte et element til en ny position, som vil ombytte positionerne for it2 og it3...

  1. Fjern elementet fra arrayet ved hjælp af $pull [ Docs Here ] .

    update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
    
  2. Indsæt elementet i den nye position ved hjælp af $push. [ Docs Here ] .

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

Hvornår skal du bruge

Pouzors svar på at bruge $set kan være enklere og yde bedre i mange tilfælde.

Men hvis flere brugere tilføjer, fjerner og omarrangerer array-elementer samtidigt, betyder denne metode, at I ikke overskriver hinandens ændringer.

Det kan også være mere effektivt i nogle tilfælde (f.eks. store array-elementer), fordi der skrives mindre data.

GOTCHA:Liste over lister

Hvis listen, du omarrangerer, er et array af arrays, skal du bruge $all-operatoren med $pull [ Docs Here ]

Tag dette eksempel:

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

Her er koden til at fjerne den første liste fra listen over lister:

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

Liste over objekter

Det er nemt. Lad os sige, at du har følgende liste over objekter:

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

Du kan $pull sådan her:

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


  1. Microservices Architecture til meget hyppig dataadgang; i hukommelsesløsninger?

  2. Serveropdagelses- og overvågningsmotoren er forældet

  3. mongoose:middleware pre deleteOne-indstillinger virker ikke

  4. Kan ikke starte Redis-serveren på grund af konfigurationsfilfejl