增量嵌套猫鼬模式
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 } }
);
这是我的模型:
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 } }
);