递增嵌套猫鼬 shcema

问题描述

这是我的模型:

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