请考虑教师Johnny Appleseed的课程开始时间文档:

{
  _id: 'ka83nala9cya9epsj',
  fullName: Johnny Appleseed,
  schedule: {
   '11/05/2016': '12:30',
   '11/15/2016': '2:30',
   '11/16/2016': '1:30',
   '12/07/2016': '9:30',
   '12/18/2016': '10:30',
   '12/23/2016': '8:30',
  }
  ...
}

我们还有一个功能来处理所有这些伟大的事情。我试过几种不同的组合,但似乎没有什么是完全正确的。这是一个我认为可行但仍然不行的例子。
function removeStartTime(_instrName, _lessonDate) {
  const _scheduleKey = `schedule.${_lessonDate}`;
  return Instructors.update({ fullName: _instrName }, { $unset: { _scheduleKey: 1 } });
}

目标是:
取消计划(删除)Johnny Appleseed从计划的12/18/2016日期开始,因此完成的文档将如下所示:
{
  _id: 'ka83nala9cya9epsj',
  fullName: Johnny Appleseed,
  schedule: {
   '11/05/2016': '12:30',
   '11/15/2016': '2:30',
   '11/16/2016': '1:30',
   '12/07/2016': '9:30',
   '12/23/2016': '8:30',
  }
  ...
}

请帮忙,谢谢!

最佳答案

将变量用方括号括起来用作属性名时,需要使用computed property name语法:

Instructors.update({ fullName: _instrName }, { $unset: { [_scheduleKey]: 1 } });

关于javascript - MongoDB - 当嵌套键是变量时,从对象中删除($ unset)嵌套键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41210424/

10-09 20:12