mongodb.mongoose维护内嵌数组元素

本文详细介绍了在Node.js环境中,使用MongoDB进行项目子元素的新增、修改和删除操作的具体方法,包括代码示例及错误处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行环境:

- Nodejs
- MongoDB

文档实例名:

ProjectJob

文档格式如下:

{
    "_id" : ObjectId("5bc69eb0b298b33578bde0d8"),
    "title" : "项目名称",
    "author" : ObjectId("5b694937dd0ca426403c5f2b"),
    "createdate" : ISODate("2018-10-17T02:30:08.021Z"),
    "jobs" : [ 
        {
            "_id" : ObjectId("5bc6d4703363941e30d6ccc7"),
            "subject" : "项目子元素111"
        }, 
        {
            "_id" : ObjectId("5bc6d4853363941e30d6ccc8"),
            "subject" : "项目子元素222"
        }
    ]
}

 

新增子元素

var swhere = {_id: pjid};
var supdate =
{$addToSet: {jobs:{subject: job}}}
ProjectJob.findOneAndUpdate(swhere, supdate, {new:true}, function(err){
  if (err) {
    res.end(JSON.stringify({code:
400, msg: "职位添加不成功"}));
    return;
  }

  res.end(JSON.stringify({code:
200, msg: "OK"}));
});

 

修改子元素

var swhere = {_id: pjid, "jobs._id": jid};
var supdate = {$set:{"jobs.$":{"subject": job}}};
ProjectJob.update(swhere, supdate, function(err){
  if (err) {
    res.end(JSON.stringify({code: 400, msg: "更新不成功"}));return;
  }
  res.end(JSON.stringify({code: 200, msg: "OK"}));
});

 

删除子元素

var swhere = {_id: pjid};
var supdate = {$pull: {jobs: {_id: jid}}}
ProjectJob.update(swhere, supdate, function(err){
  if (err) {
    res.end(JSON.stringify({code: 400, msg: "删除不成功"}));return;
  }
  res.end(JSON.stringify({code: 200, msg: "OK"}));
});

 

转载于:https://www.cnblogs.com/visionsl/p/9803943.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值