问题描述
这是我的模型:
1
我想将 firefox 的值增加 const telemetery = mongoose.Schema({
link: String,originalLink: String,creator: {
type: mongoose.Schema.Types.ObjectId
},browerType: {
Firefox: Number,Chrome: Number,Edge: Number,IE: Number,Safari: Number,Other: Number
}
我现在在做什么:
1
但这仍然没有更新文档。
最后,我还想使用变量而不是 const test = await Telemetery.findOneAndUpdate({link: req.params.link},{browserType: {$inc : {Firefox : 1}}})
,以便根据输入动态增加值。
有人可以帮忙吗?
解决方法
要增加嵌套对象中的值,您可以使用点表示法
const test = await Telemetery.findOneAndUpdate(
{ link: req.params.link },{ $inc: { 'browserType.Firefox': 1 } }
);
为了动态设置字段名称,您可以执行类似的操作
const browserName = 'Firefox';
const key = `browserType.${browserName}`;
const test = await Telemetery.findOneAndUpdate(
{ link: req.params.link },{ $inc: { [key]: 1 } }
);