gpt4 book ai didi

node.js - 从 mongodb 数组中删除一个元素

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:04 26 4
gpt4 key购买 nike

我想从存储在 mongodb 文档中的数组中删除特定元素。我正在使用这个:

 model.registerCompany.findOneAndUpdate({companyKey:"a key"},
{$pop:{onlineEmployees:"John"}},
function(err,doc){
if(!err)
console.log("Online list modified: ",doc);
else
console.log("Online list modified error :",err);
});

但我不确定 $pop 是否从 array(onlineEmployees) 中删除特定元素“John”,或者只是从中弹出最后一个元素。

我这样做对吗还是有其他方法可以做到这一点?

我想我得到了答案.. $pull 用于此目的,如链接中所述: http://docs.mongodb.org/manual/reference/operator/pull/#_S_pull

最佳答案

$pop运算符将删除数组的第一个或最后一个元素,这不一定是正确的元素。

如果您想要特定元素,可以 $pull具有已定义标准的项目:

   model.registerCompany.findOneAndUpdate({companyKey:"a key"},
{$pull:{onlineEmployees:"John"}},

您必须确保数组中的值是唯一的,因为 $pull 会删除与名称“John”匹配的每个元素。

如果数组中存在相同的值,则需要使用 $unset$ 位置运算符将目标元素值设置为 null (不幸的是 $unset 不会删除元素)然后使用 $pull 删除具有 null 值的元素。为此,您必须确保有效值不能为 null。在这种情况下,代码可能如下所示:

model.registerCompany.findOneAndUpdate({companyKey:"a key", onlineEmployees:"John"},{ $unset: { "onlineEmployees.$" : '' } } ) 
model.registerCompany.findOneAndUpdate({companyKey:"a key"},{ $pull: { "onlineEmployees" : null } } )

关于node.js - 从 mongodb 数组中删除一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472858/

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