关于mongodb嵌套操作的问题

两层嵌套的操作正常是这样的

db.collection.update({'xxx': 'xxx'}, {$inc: {'aaa.bbb': 1}})

但现在如果bbb是不确定的,是个变量,比如是

let x = 'bbb';
db.collection.update({'xxx': 'xxx'}, {$inc: {`aaa.${x}`: 1}})

这样就会出错,该咋整?

阅读 1.3k
1 个回答

这个跟mongodb没关系,是 js 的语法错误,不能用表达式作为对象的属性,当你用反引号的时候 `aaa.${x}` 变成了一个表达式,语法就通不过.
要达成效果的的话可以用以下两种方式

// 用中括号包裹表达式
let x = 'bbb';
db.collection.update({'xxx': 'xxx'}, {$inc: {[`aaa.${x}`]: 1}})

// 或者先创建号对象,在赋值,然后传递整个对象
const obj={}
obj[`aaa.${x}`]=1
db.collection.update({'xxx': 'xxx'}, {$inc: {obj}})

其实第二种方法只是把第一种方法复杂化了


参考
对象的扩展

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题