gpt4 book ai didi

jquery-ui - 如何移动 MongoDB 数组中的项目?

转载 作者:IT老高 更新时间:2023-10-28 13:22:45 25 4
gpt4 key购买 nike

有没有办法更新文档数组以将项目从一个索引移动到另一个索引?例如

{
name: "myDoc",
items: ["it1", "it2", "it3"]
}

作为 JQuery-UI 可排序事件 it2 和 it3 交换位置的结果。因此,我想更新他们在存储在 MongoDB 中的 myDoc 中的位置。

最佳答案

这是另一种将元素移动到新位置的方法,它将交换 it2 和 it3 的位置...

  1. 使用 $pull [ Docs Here ] 从数组中删除元素.

    update({"name": "myDoc"}, {$pull: {"items" : "it3"}});
  2. 使用 $push 将元素插入到新位置。 [ Docs Here ] .

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

何时使用

Pouzor 对使用 $set 的回答可能更简单,并且在许多用例中表现更好。

但是,如果多个用户同时添加、删除和重新排序数组项,则此方法意味着您不会覆盖彼此的更改。

在某些情况下(例如大型数组元素)也可能更有效,因为写入的数据更少。

GOTCHA:列表列表

如果您要重新排序的列表是一个数组数组,您需要将 $all 运算符与 $pull [ Docs Here ] 一起使用

举个例子:

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

这是从列表列表中删除第一个列表的代码:

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

对象列表

这很容易。假设您有以下对象列表:

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

你可以像这样 $pull:

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

关于jquery-ui - 如何移动 MongoDB 数组中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17075011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com