【问题标题】:Removing an element from array in mongodb从MongoDB中的数组中删除元素
【发布时间】:2013-01-06 12:39:44
【问题描述】:

我想从存储在 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

【问题讨论】:

    标签: node.js mongodb schema


    【解决方案1】:

    $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 } } ) 
    

    【讨论】:

      猜你喜欢
      • 2017-12-22
      • 2015-06-12
      • 2019-01-25
      • 2020-04-16
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多