这是我在node.js.中使用的MongoDB帖子模型,我想在评论数组中更新每个对象下的点赞数量,即每个comment.How上的点赞数量我可以增加点赞数量值吗?
_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来做的事情:
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模式:
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,
},
],发布于 2021-03-09 01:41:46
如果您想将每个评论的点赞数加1 (这里我假设model是您的查询对象)。
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.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发布的评论增加点赞
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/
发布于 2021-03-09 01:42:26
await Post.findByIdAndUpdate(post.postId, {
$inc: { like: 1 },
});如果你喜欢被公布的号码,这个代码必须工作。
https://stackoverflow.com/questions/66533656
复制相似问题