29
Update an object in nested array in MongoDB
Hello Reader π
To update an object inside a nested array in MongoDB you can use this approach, Its well tested and working.
Update nested array objects. See below picture for a better Idea what we are going to do. We will update the object which is nested by 3 levels of array.
{
discussionList[
discussionList [
{
object-value-to-be-updated.
}
]
]
}
public courseCategoryPostCommentReplyUpdate(operation: CommentReplyUpdateMutation): Promise<IDocumentUpdateType> {
return this.courseCategoryPostCommentsModel.updateOne(
{
"postId" : operation.postId,
'discussionList': {
'$elemMatch': {
'_id': operation.commentId,
"discussionList._id": operation.replyId
}
}
},
{
$set: {
"discussionList.$[outer].discussionList.$[inner].payload": operation.payload,
"discussionList.$[outer].discussionList.$[inner].isUpdated": true,
"discussionList.$[outer].discussionList.$[inner].commentUpdateTime": new Date()
}
},
{
arrayFilters: [
{ "outer._id": operation.commentId},
{"inner._id": operation.replyId}
]
}
);
}
FootNotes - this code is to update the reply of a comment.
That's how you can perform operations on an object in nested array in mongoDB document. You can also update/delete the objects which are having the more level of nesting by just modifying the query.
Please let me know if the code needs an explanation. Thanks π
29