Voici une autre façon de déplacer un élément vers une nouvelle position qui permutera les positions de it2 et it3...
-
Supprimez l'élément du tableau à l'aide de $pull [ Docs Here ] .
update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
-
Insérez l'élément dans la nouvelle position en utilisant $push. [ Documents ici ] .
update({"name": "myDoc"}, { $push: { "items" : { $each : [ "it3" ], $position : 1 } } });
Quand utiliser
La réponse de Pouzor à l'utilisation de $set pourrait être plus simple et plus performante pour de nombreux cas d'utilisation.
Cependant, si plusieurs utilisateurs ajoutent, suppriment et réorganisent simultanément des éléments de tableau, cette méthode signifie que vous n'écraserez pas les modifications des autres.
Cela peut également être plus efficace dans certains cas (par exemple, les éléments de tableau volumineux) car moins de données sont écrites.
GOTCHA :liste des listes
Si la liste que vous réorganisez est un tableau de tableaux, vous devez utiliser l'opérateur $all avec $pull [ Documents ici ]
Prenons cet exemple :
{
name: "myDoc",
items: [
[ "User", "dofij20r91dj93" ],
[ "User", "239vjvidjfsldf" ],
[ "User", "2309jvdsjdkk23" ]
]
}
Voici le code pour supprimer la première liste de la liste des listes :
update({"name": "myDoc"}, {
$pull: {
"items" : {
$all : [ "User", "dofij20r91dj93" ] // the sub-list to $pull
}
}
});
Liste des objets
C'est facile. Supposons que vous ayez la liste d'objets suivante :
{
name: "myDoc",
items: [
{ type: "User", id: "dofij20r91dj93", name: "Dave" },
{ type: "Group", id: "239vjvidjfsldf", name: "Accountants" },
{ type: "User", id: "2309jvdsjdkk23", name: "Toni" }
]
}
Vous pouvez $tirer comme ceci :
update({"name": "myDoc"}, {
$pull: {
"items" : { type: "User", id: "dofij20r91dj93" }
}
});