You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js往MongoDB对象数组push新对象时添加独立_id的方法

解决MongoDB数组push时对象属性平级的问题

你当前代码里的问题是,直接在$push的对象中写myBody,导致它变成了嵌套的子属性。要让_id和myBody里的所有属性处于同一层级,只需要用对象展开运算符把myBody的属性拆出来,和_id放在同一个对象里即可。

修改后的完整代码如下:

const { ObjectId } = require('mongodb'); // 若使用Mongoose,可替换为mongoose.Types.ObjectId
const { receivedEmail, ...myBody } = req.body 

studentModel.findOneAndUpdate(
  { email: req.body.receivedEmail },
  { $push: { previousEducation: { _id: new ObjectId(), ...myBody } } }
)
.then((response) => {
  res.send({ message: 'O level Result added successfully', status: true, response });
})

关键说明:

  • ...myBody会把你解构得到的exam、subject、grade等所有键值对,直接展开到当前对象中,最终previousEducation新增的元素结构就是{ _id: "xxx", exam: "waec", subject: "english", ... },完全符合你需要的平级结构。
  • 注意确保ObjectId已正确导入,Mongoose环境下可以用new mongoose.Types.ObjectId()生成ID。

内容的提问来源于stack exchange,提问作者Adex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:42:38