Home > other >  How to get the original number I am incrementing in mongoose
How to get the original number I am incrementing in mongoose

Time:10-11

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" } } }}
})
  • Related