How to store comments in NoSQL (MongoDB)?
mongodb, nosql
Solution
Method 1
- No need to joins => fast access to data
- The NoSQL way of doing it
- Every comment is just related to just that post, so why not store them together(you store the title and the body together ;)
If you have large documents, >15.5 Megabyte, and you gets a loot of comments then you probably will need to store them somewhere else. This because the maximum document size is 16 Megabyte.
Method 2 is the RDMBS way of doing it, Mongo does not have joins inbuilt so you will need to do them in your application.
Problem
1 way Comments are embedded in Post document: ``` { "_id": ObjectId(12345), "title": "Cat ate elephant!", "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean convallis pretium vulputate.", "comments": [ {"name": "Cat", "body": "MEOW!"}, {"name": "Elephant", "body": "I was eaten by cat, lol!"}, {"name": "Human", "body": "I am hungry!"} ] } ``` 2 way Relationship between Post and Comments (in separate documents). Post has many Comments: ``` // POST // { "_id": ObjectId(12345), "title": "Cat ate elephant!" "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean convallis pretium vulputate." } // Comments // { "_id": ObjectId(...), "post_id": ObjectId(12345), "name": "Cat", "body": "MEOW!" } { "_id": ObjectId(...), "post_id": ObjectId(12345), "name": "Elephant", "body": "I was eaten by cat, lol!" } { "_id": ObjectId(...), "post_id": ObjectId(12345), "name": "Human", "body": "I am hungry!" } ``` Which way is better?