gpt4 book ai didi

javascript - 从集合中的数组中删除对象[性能/最佳实践/问题]

转载 作者:行者123 更新时间:2023-12-03 11:47:28 25 4
gpt4 key购买 nike

所以我有一个名为 Pages 的集合,在这个集合内,每个页面都有一个小部件数组,每个小部件都有一个 uuid,我用它来标识每个小部件。

Pages [ 
widgets : [{uuid : "someuuid"}, {uuid : "otheruuid"}]
]

我需要从 widgets 数组中删除一个项目并更新集合。所以我读了这篇文章about how to remove items in an array (Mongo DB approach) 。帖子示例:

db.people.update({"name":"dannie"}, {'$pull': {"interests": "guitar"}})

我尝试过,但它对我的项目不起作用,不知道为什么,我不确定为什么,我不知道如何编写 mongodb 指令

因此,由于我必须继续工作,所以我做了这样的事情:

//random function to get index of an object in the array;
var indexOf = myfunction.getIndexOfObject()
if (indexOf > -1) {
//remove the item in the array of the Active Page
activePage.widgets.splice(indexOf, 1);
//update the collection
Pages.update({_id : activePage._id},activePage);
}

我想知道我的做法是否正确;它工作正常,没有任何问题。但我不知道在性能或安全性或其他方面是否有任何问题或警告,因为文档方法完全不同:

文档方法:

http://docs.mongodb.org/manual/reference/operator/update/pull/

db.cpuinfo.update(
{ flags: "msr" },
{ $pull: { flags: "msr" } },
{ multi: true }
)

感谢您的支持。

最佳答案

虽然你所做的一切似乎都是正确的,但我厌倦了使用 $pull 来更新数组,我可以做到。我创建了一个示例页面集合并插入了以下文档

db.pages.insert({widgets : [{uuid : "someuuid1"}, {uuid : "otheruuid2"}]});
db.pages.insert({widgets : [{uuid : "someuuid2"}, {uuid : "otheruuid3"}]});
db.pages.insert({widgets : [{uuid : "someuuid3"}, {uuid : "otheruuid3"}]});
db.pages.insert({widgets : [{uuid : "someuuid3"}, {uuid : "otheruuid4"}]});

我运行更新查询来提取元素

db.pages.update({},{$pull : {"widgets" : {uuid : "otheruuid3"}}}, {multi:true});

我可以看到文档 2 和 3 在小部件中没有“uuid : otheruuid3”。不太确定您面临什么问题

关于javascript - 从集合中的数组中删除对象[性能/最佳实践/问题],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25988108/

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