增量嵌套猫鼬模式

Increment nested mongoose shcema

这是我的模型:

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
}

我想将 firefox 的值增加 1

我现在在做什么:

const test = await Telemetery.findOneAndUpdate({link: req.params.link}, {browserType: {$inc : {Firefox : 1}}})

但这仍然没有更新文档。 最后,我还想使用变量而不是 Firefox,以便根据输入动态增加值。

有人可以帮忙吗?

要增加嵌套对象中的值,您可以使用点表示法

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