我想从mongoose文档中动态删除字段。
我尝试了什么: 我正在使用
$unset
当我输入值
时"cars.BMW"
它有效。但是,当我想传递一个参数,这将是一个汽车品牌然后取消它。我试过了
{$unset: {"cars."+brand: " "}}
但加号出乎意料。
答案 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'))
}
})
现在字段确认密钥已删除。