I am working on a project, where when the user likes a comment nested inside comments array in a post document inside the posts collection, I use the following code to increment the number of likes on the comment:
await Post.findOneAndUpdate({ "postComments.commentId": commentId }, { $inc: { "postComments.$.commentLikes": 1 } });
The issue is, I need the original number I am incrementing to return it to the user view to increment the displayed number of likes dynamically, and I can't get the whole object because it will return the whole post, where the comment is nested inside the comments array and I don't know which index is that. How do I get the original number of likes from the nested comment?
Thank you in advance :)
CodePudding user response:
use projection
in findOneAndUpdate
db.getCollection('comment').findOneAndUpdate(
{
"postComments.commentId": "1"
},
{
$inc: {
"postComments.$.commentLikes": 1
}
},
{
projection: { postComments: { $elemMatch: { commentId: { $eq: "1" } } }}
})