sql >> Databáze >  >> NoSQL >> MongoDB

Jak přesunout položku v poli MongoDB?

Zde je další způsob, jak přesunout prvek na novou pozici, která vymění pozice jeho2 a it3...

  1. Odeberte prvek z pole pomocí $pull [ Docs Here ] .

    update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
    
  2. Vložte prvek do nové pozice pomocí $push. [ Dokumenty zde ] .

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

Kdy použít

Pouzorova odpověď na použití $set může být jednodušší a v mnoha případech použití fungovat lépe.

Pokud však více uživatelů současně přidává, odebírá a přeskupuje položky pole, tato metoda znamená, že si vzájemně nepřepíšete změny.

V některých případech může být také efektivnější (např. velké prvky pole), protože se zapisuje méně dat.

GOTCHA:Seznam seznamů

Pokud je seznam, který měníte, pole polí, musíte použít operátor $all s $pull [ Dokumenty zde ]

Vezměte si tento příklad:

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

Zde je kód pro odstranění prvního seznamu ze seznamu seznamů:

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

Seznam objektů

To je snadné. Řekněme, že máte následující seznam objektů:

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

Můžete $tahat takto:

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


  1. Jak mohu vytvořit program pomocí c++ ovladače mongodb?

  2. Jak převést BsonDocument na silně typovaný objekt pomocí oficiálního ovladače MongoDB C#?

  3. Mongo Json Schema Validator AnyOf nefunguje

  4. Seskupit podle data s místním časovým pásmem v MongoDB