Dựa trên dữ liệu mẫu của bạn cho ứng dụng nhắn tin, những gì bạn có thể làm là có hai bộ sưu tập:Cuộc hội thoại và Tin nhắn. Khi mối quan hệ là một Cuộc hội thoại có nhiều Tin nhắn.
Conversation:
{ id: 123
participants: ['john', 'marry'],
}
Message:
{ sender: 'john',
content: 'howdy',
time_created: new Date(),
converstationId: 123
},
{ sender: 'marry',
content: 'good u',
time_created: new Date(),
converstationId: 123
},
Tạo một thông báo tài liệu mới sẽ tốt hơn trong trường hợp này, vì sau đó bạn có thể có hai ứng dụng (1 cho john và 1 cho kết hôn) mà không cần xử lý khả năng cả hai cùng cập nhật cùng một tài liệu. phiên trò chuyện.
Ngoài ra, nếu một cuộc hội thoại là một tài liệu đơn lẻ, bạn có thể kết thúc với một tài liệu rất lớn. (Mối quan tâm về tăng trưởng tài liệu)
Bạn có thể tìm hiểu thêm về lập mô hình dữ liệu cho tài liệu mongodb này
http://docs.mongodb.org/manual/core/data-modeling-introduction/
Cũng xem MongoDB:Socialite để biết ví dụ / thảo luận cho trường hợp sử dụng mạng xã hội.
Hy vọng nó sẽ hữu ích.