mongodb.mongoose维护内嵌数组元素

运行环境:

- 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"}));
});

猜你喜欢

转载自www.cnblogs.com/visionsl/p/9803943.html