【问题标题】:Increment nested mongoose shcema增加嵌套的猫鼬模式
【发布时间】:2021-06-07 22:43:52
【问题描述】:

这是我的模型:

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,以便根据输入动态增加值。

有人可以帮忙吗?

【问题讨论】:

标签: node.js mongodb express mongoose mongoose-populate


【解决方案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 } }
);

【讨论】:

  • 谢谢,它有效!我想知道如果我也可以使用变量名,比如browserType.[browserName][browserName] 是一个变量
  • 非常感谢它的工作! :)
猜你喜欢
  • 2019-03-22
  • 2014-06-22
  • 2015-09-21
  • 1970-01-01
  • 2018-06-23
  • 2019-01-16
  • 2017-01-28
  • 1970-01-01
  • 2019-07-20
相关资源
最近更新 更多