简体   繁体   English

如何使用 angular nodejs express 更新 mongodb 中的数据

[英]how to update data in mongodb using angular nodejs express

I want to update the likes' value with 1.我想用 1 更新喜欢的值。

My MongoDB structure is as follows.我的MongoDB结构如下。

   {"_id":{"$oid":"5f980a66c4b0d52950bdf907"},
    "course_id":"5002",
    "lecture_id":"451",
    "__v":0,
    "created_at":{"$date":"2020-10-27T11:54:14.842Z"},
    "message":[
    {
    "_id":{"$oid":"5f980a84c4b0d52950bdf90a"},
    "from":{
    "userId":"68819","name":"Developer IIRS",
    "avatar":"https://api.adorable.io/avatars/285/811753.png"
    },
    "content":"ok",
    "likes":0,
    "parent_id":null,
    "created_at":{"$date":"2020-10-27T11:54:44.388Z"}
    }
    ]
    }

Here is my code to update value of likes这是我更新喜欢值的代码

    router.post('/:lectureId/:courseId/:id', function(req, res, next) {
      let query = {
        lecture_id: req.params.lectureId,
        course_id: req.params.courseId
    
      };
      let update = { $push: { message: { _id: req.params.id,likes: 1 } } }
    
      var options = {
        new: true
      }
      console.log('Liked', query)
    
      Chat.update(query, update, function(err, result) {
        if (err) {
          //res.send(err);
          console.log('err',err );
          return err;
        }
        res.json(result);
      })
    }); 

Its basically adding new document.它基本上是在添加新文档。 I am stuck here how can i do this.我被困在这里我该怎么做。

  "lecture_id": "451",
  "course_id": "5002"
},
{
  $inc: {
    "message.$[elem].likes": 1
  }
},
{
  new: true,
  arrayFilters: [
    {
      "elem._id": "5f980a84c4b0d52950bdf90a"
    }
  ]
})```

Here is the mongo query.这是mongo查询。

db.collection.update({
  "lecture_id": "451",
  "course_id": "5002",
  "message._id": "5f980a84c4b0d52950bdf91a"
},
{
  "$inc": {
    "message.$.likes": 1
  }
})

Try it here Mongo Playground在这里试试Mongo 游乐场

Not an expert in nodejs.不是 nodejs 专家。 Below update statement may work for you.以下更新声明可能对您有用。

let update = { $inc: { "message.$.likes": 1 } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM