首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nodejs在MongoDB中的数组对象中递增一个值?

问如何使用nodejs在MongoDB中的数组对象中递增一个值?
EN

Stack Overflow用户
提问于 2021-03-09 00:36:53
回答 2查看 32关注 0票数 0

这是我在node.js.中使用的MongoDB帖子模型,我想在评论数组中更新每个对象下的点赞数量,即每个comment.How上的点赞数量我可以增加点赞数量值吗?

代码语言:javascript
复制
_postid:6045b7a3b0b0423790d6484b
photo:Object
likes:Array
text:"hey there"
comments:Array
 0:Object
 1:Object
 2:Object
   _id :6045c9251f99b81ee4dbc0f6
    text:"tetstst"
    postedBy:6045c36dd8df2f2f00b115d5
    likes:0
    created:2021-03-08T06:50:13.851+00:00
created:2021-03-08T05:35:31.524+00:00
postedBy:6045116e37280f0970cf63a5

下面是我尝试使用FindoneandUpdate来做的事情:

代码语言:javascript
复制
Post.findOneAndUpdate(
    model,
    { $inc: { "comments.likes": 1 } },
    { new: true }
  ).exec((err, result) => {
    if (err) {
      return res.status(400).json({
        error: err,
      });
    }
    res.json(result);
  });
};

下面是我正在使用的post模式:

代码语言:javascript
复制
text: {
    type: String,
    required: "Name is required",
  },

  photo: {
    data: Buffer,
    contentType: String,
  },
  likes: [{ type: mongoose.Schema.ObjectId, ref: "User" }],
  comments: [
    {
      text: String,
      created: { type: Date, default: Date.now },
      postedBy: { type: mongoose.Schema.ObjectId, ref: "User" },
      likes: Number,
    },
  ],
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-09 01:41:46

如果您想将每个评论的点赞数加1 (这里我假设model是您的查询对象)。

代码语言:javascript
复制
Post.findOneAndUpdate(
    model,
    { $inc: { "comments.$[].likes" : 1 } },
    { new: true }
  ).exec((err, result) => {
    if (err) {
      return res.status(400).json({
        error: err,
      });
    }
    res.json(result);
  });
};

如果你只想增加帖子中的第一条评论,

代码语言:javascript
复制
Post.findOneAndUpdate(
    model,
    { $inc: { "comments.0.likes" : 1 } },
    { new: true }
  ).exec((err, result) => {
    if (err) {
      return res.status(400).json({
        error: err,
      });
    }
    res.json(result);
  });
};

如果你想为6045c36dd8df2f2f00b115d5发布的评论增加点赞

代码语言:javascript
复制
Post.findOneAndUpdate(
    { ...model, { "comments.postedBy": 6045c36dd8df2f2f00b115d5 }},
    { $inc: { "comments.$.likes" : 1 } },
    { new: true }
  ).exec((err, result) => {
    if (err) {
      return res.status(400).json({
        error: err,
      });
    }
    res.json(result);
  });
};

另请参阅:https://docs.mongodb.com/manual/reference/operator/update-array/

票数 1
EN

Stack Overflow用户

发布于 2021-03-09 01:42:26

代码语言:javascript
复制
 await Post.findByIdAndUpdate(post.postId, {
    $inc: { like: 1 },
  });

如果你喜欢被公布的号码,这个代码必须工作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66533656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档