Làm cách nào để xóa mảng lồng nhau 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 để xóa mảng lồng nhau 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 để xóa mảng trong MongoDB?

Để xóa phần tử, hãy cập nhật và sử dụng $pull trong MongoDB. Toán tử $pull loại bỏ khỏi một mảng hiện có tất cả các phiên bản của một giá trị hoặc các giá trị khớp với một điều kiện đã chỉ định.

Làm cách nào để xóa một đối tượng khỏi một mảng trong MongoDB?

Để xóa một phần tử khỏi mảng, chúng ta dùng toán tử $pull . Bên trong đối tượng $pull, chúng ta phải chỉ định một cặp khóa-giá trị. khóa là tên của thuộc tính mảng từ tài liệu của chúng tôi và giá trị là bộ lọc mà chúng tôi muốn áp dụng để xác định phần tử nào sẽ bị xóa.

Làm cách nào để cập nhật mảng đối tượng lồng nhau trong MongoDB?

Cập nhật mảng đối tượng lồng nhau .
db. thu thập. .
Toán tử $set thay thế giá trị của một trường bằng giá trị đã chỉ định
The filtered positional operator $[] identifies the array elements that match the arrayFilters conditions for an update operation..

Làm cách nào để xóa mảng lồng nhau trong JavaScript?

Tóm tắt .
Sử dụng mảng. nguyên mẫu. phương thức flat() để làm phẳng một mảng với các mảng lồng nhau
Sử dụng đối số độ sâu để chỉ định độ sâu của các mảng lồng nhau sẽ được làm phẳng. Độ sâu là 1 theo mặc định
Flat() cũng loại bỏ các lỗ trong mảng với các ô trống