• 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"}));
    });
  • 相关阅读:
    list count++
    Java程序员常用工具类库
    Java读写Excel之POI超入门
    JS操作JSON总结
    ORACLE RAC 11G 添加以及删除UNDO表空间
    oracle 索引优化之distinct
    Redis常用的命令
    Linux 安装Redis 5.0(以及参数调优)
    OEM12C(12.1.0.5)安装插件监控mysql(linux)
    mysql版本升级
  • 原文地址:https://www.cnblogs.com/visionsl/p/9803943.html
Copyright © 2020-2023  润新知