为了账号安全,请及时绑定邮箱和手机立即绑定

使用变量键作为对象值时,在 MongoDB 中更新对象数据的正确方法是什么?

使用变量键作为对象值时,在 MongoDB 中更新对象数据的正确方法是什么?

手掌心 2022-10-08 15:36:42
第一次在这里发帖。我有一个猫鼬模式和模型,如下所示:const DataSchema = new Schema(  {    name:{type: String, default: ""},    task: {type: Schema.Types.Mixed, default: {}}  },  { timestamps: true, _id: true, minimize: false, strict: false });const Data = mongoose.model("Data", DataSchema);现在,当使用“名称”参数创建用户配置文件时,我会得到以下响应作为示例:{"success: true, "data":[{"name":"Eminem","_id":"5ee8468316a2ea32bcfbf411","task":{},"createdAt":"2020-06-16T04:11:47.441Z","updatedAt":"2020-06-16T04:11:47.441Z","__v":0}]}我的下一步行动是根据用户对“taskName”的输入来更新任务对象。例如:如果用户输入“work”作为“taskName”,我希望任务对象更新为"task": {work:{}}.为此,我使用了下面的方法,但它从不更新“任务”对象。谁能看到我做错了什么?var id = "5ee8468316a2ea32bcfbf411"var taskName="work"var key = 'task.'+taskNamevar push = {}push[key]={}Data.findByIdAndUpdate({_id:id}, push, (err,data)=> {      if(err) throw err  });在此先感谢您的帮助。
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

应该是这样的:


let id = "5ee8468316a2ea32bcfbf411"

let taskName="work"

Data.findByIdAndUpdate(id,

      {$set:{task:{[taskName]:{}}}, 

      (err,data)=> {

      if(err) throw err

  }

)


查看完整回答
反对 回复 2022-10-08
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信