zoukankan      html  css  js  c++  java
  • 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"}));
    });
  • 相关阅读:
    python元编程(metaclass)
    STL源码剖析:序
    高效C++:定制new和delete
    高效C++:模板和泛型编程
    高效C++:继承和实现
    高效C++:实现
    高效C++:设计与声明
    高效C++:资源管理
    高效C++:构造/析构/赋值
    Noip2017退役记
  • 原文地址:https://www.cnblogs.com/visionsl/p/9803943.html
Copyright © 2011-2022 走看看