Làm cách nào để cập nhật giá trị đối tượng trong MongoDB?

Để cập nhật một đối tượng bên trong một mảng lồng nhau trong MongoDB, bạn có thể sử dụng phương pháp này, Nó đã được thử nghiệm và hoạt động tốt

Trường hợp

Cập nhật các đối tượng mảng lồng nhau. Xem hình dưới đây để biết rõ hơn về những gì chúng ta sẽ làm. Chúng tôi sẽ cập nhật đối tượng được lồng bởi 3 cấp độ của mảng

{
 discussionList[
  discussionList [
   {
     object-value-to-be-updated.
   }
  ]
 ]
} 

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Làm cách nào để cập nhật giá trị đối tượng trong MongoDB?

Giải pháp

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}

      ]
      }
    );
  }

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

FootNotes - mã này là để cập nhật câu trả lời của một bình luận

Đó là cách bạn có thể thực hiện các thao tác trên một đối tượng trong mảng lồng nhau trong tài liệu mongoDB. Bạn cũng có thể cập nhật/xóa các đối tượng có mức độ lồng ghép cao hơn bằng cách sửa đổi truy vấn

Ví dụ về xóa và nhận

Xóa bỏ

// Informational Note:
  // Delete nested array values in mongodb


  public courseCategoryPostCommentReplyDelete(operation: CommentReplyDeleteMutation): Promise<IDocumentUpdateType> {
    return this.courseCategoryPostCommentsModel.updateOne(
      {
        'postId': operation.postId,

        'discussionList': {
          '$elemMatch': {
            '_id': operation.commentId,
            'discussionList._id': operation.replyId
          }
        }
      }, {
        $pull: {
          'discussionList.$[outer].discussionList': {
            user: operation.userId,
            _id: operation.replyId
          }
        }
      },
      {
        arrayFilters: [
          { 'outer._id': operation.commentId }
        ],
        multi: false
      }
    );
  }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

ĐƯỢC

public courseCategoryPostCommentRead(postId: string): Promise<IComment> {
    return this.courseCategoryPostCommentsModel.findOne<IComment>({
      postId: postId
    }).populate('discussionList.user').populate('discussionList.discussionList.user').exec();
  }

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tôi đang sử dụng GraphQL. Bạn có thể cần lặp lại kết quả và hiển thị nhận xét/câu trả lời theo đó

Làm cách nào để cập nhật giá trị trường trong MongoDB?

Tài liệu MongoDB Update() với ví dụ .
Bước 1) Ra lệnh cập nhật
Bước 2) Chọn điều kiện mà bạn muốn sử dụng để quyết định tài liệu nào cần được cập nhật. .
Bước 3) Sử dụng lệnh set để sửa đổi Tên trường
Bước 4) Chọn Tên trường bạn muốn sửa đổi và nhập giá trị mới cho phù hợp
đầu ra

Làm cách nào để cập nhật mảng giá trị đối tượng trong MongoDB?

Để thực hiện cập nhật trên tất cả các phần tử mảng được nhúng của từng tài liệu phù hợp với truy vấn của bạn, hãy sử dụng toán tử vị trí đã lọc $[ ] chỉ định các phần tử mảng phù hợp trong tài liệu cập nhật.

Làm cách nào để chỉ cập nhật một giá trị trong MongoDB?

Trong MongoDB, bạn có thể cập nhật một tài liệu trong bộ sưu tập bằng cách sử dụng db. bộ sưu tập. phương thức updateOne() . Phương pháp này cập nhật một tài liệu trong bộ sưu tập theo bộ lọc.