Tôi thảo luận về vấn đề này một chút ở đây, hãy đọc phần này trước: https://stackoverflow.com/a/27285313/ 68567
Đối với trường hợp của bạn, Tùy chọn 3 (giữ một số dữ liệu trong mô hình chính của bạn) có lẽ là tốt nhất. Chìa khóa là để Tránh tăng trưởng mảng không giới hạn .
Điều này liên quan đến cách Mongodb phân bổ tài liệu. http://docs.mongodb.org/manual/core/storage/ "Mọi tài liệu trong MongoDB được lưu trữ trong một bản ghi có chứa chính tài liệu đó và không gian bổ sung, hoặc phần đệm, cho phép tài liệu phát triển do kết quả của các bản cập nhật."
Khi nút phân bổ tài liệu mới, nó sẽ phân bổ không gian dựa trên kích thước của tài liệu được chèn và kích thước của tài liệu đã có trong bộ sưu tập của bạn. (Đọc thêm trong liên kết ở trên.) Nếu bạn có một số tài liệu có thứ tự lớn hơn những tài liệu khác, điều này có thể dẫn đến phân mảnh.
Cách để tránh có quá nhiều tài liệu trong mảng tài liệu phụ 'nhận xét' của bạn là sử dụng lệnh $ push và $ slice. http://docs.mongodb.org/manual/reference/operator/update/slice/
Vì vậy, hãy lưu trữ '5 gần đây nhất' và hiển thị những thứ đó khi mục tải lần đầu tiên. (Hoặc cũ nhất hoặc bất kỳ tiêu chí sắp xếp nào khác mà bạn muốn sử dụng.) Sau đó, cung cấp một cách để người dùng tải nhiều hơn, cách này sẽ thực hiện một chuyến khứ hồi riêng biệt đến bộ sưu tập có tất cả chúng.