mongooseとMongoDBで「リストの中に存在しないなら追加する」時

MongoDBでリストの中に存在しないなら追加するみたいなことがしたい

「ユーザーがイイねした投稿を管理したい」みたいな時にMongoDBで直接どうするか?

express.jsでpostで受けて、以下のようにするとOK
likePostsにreq.body.postidが無ければ($ne), 追加する($push)

app.post('/api/likes/:id', (req, res) => {
    let conditions = {
      _id: req.params.id,
      likePosts: { $ne: req.body.postid }
    };
    let update = {
      $push: { likePosts: req.body.postid }
    };
    User.findOneAndUpdate(conditions, update, function(err, doc) {
      if (err) {
        console.log(err);
      } else {
        console.log(doc);
      }
    });

 

コメント