如何从mongoose文档中删除指定的字段?

时间:2016-02-18 10:38:51

标签: node.js mongodb mongoose

我想从mongoose文档中动态删除字段。

我尝试了什么: 我正在使用

$unset

当我输入值

"cars.BMW"

它有效。但是,当我想传递一个参数,这将是一个汽车品牌然后取消它。我试过了

{$unset: {"cars."+brand: " "}}

但加号出乎意料。

3 个答案:

答案 0 :(得分:1)

点符号并不像那样工作。在js中,您将使用括号表示法从字符串动态创建属性。

exports.deleteBrand = function(req, res){ 
    var brand = req.params.brand;
    var query = {};
    query["cars." + brand] = "";
    Text.update(
        {key: req.params.key},
        {$unset: query},
        function(err){ if(err) res.send(err);
        res.json({message: "Car deleted!"}); 
    });
}

如果品牌是" bmw"那么此处的查询变量将转换为:{"cars.bmw": ""}

编辑:编辑以匹配op。

的方法

答案 1 :(得分:0)

您可以使用解构和模板文字:

{$unset: {[`cars.${brand}`]: " "}}

答案 2 :(得分:0)

您可以使用 $ unset 删除feld,这是示例:

  User.findOneAndUpdate(
    {confirmationKey: req.params.key}, 
    {isConfirmed: true, $unset: { confirmationKey: ""}}, {}, (err, doc) => {

    if (err) {
      res.status(HttpStatus.BAD_REQUEST).send(StatusGen.getError(err))
    } else {
      console.log('user = ' + JSON.stringify(doc))
      res.send(StatusGen.getSuccess('confirmed'))
    }
  })

现在字段确认密钥已删除。