评论嵌入在Post文档中:
{
"_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!"}
]
}
帖子和评论之间的关系(在单独的文件中)。帖子有很多评论:
// 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!"
}
哪种方式更好?
答案 0 :(得分:2)
因为没有评论属于多个帖子,所以将它们嵌入NoSQL中的Post文档更有意义。因此,当您检索帖子时,您也会立即得到您的评论,一次查询。
答案 1 :(得分:2)
首选方法是首选,只要文档不重写。如果您要在一分钟内为帖子添加5000条评论,请使用第二种方法。
答案 2 :(得分:2)
如果您有大型文档,> 15.5兆字节,并且您收到了一些评论,那么您可能需要将它们存储在其他地方。这是因为最大文档大小为16兆字节。
方法2是RDMBS的方式,Mongo没有内置的连接,所以你需要在你的应用程序中完成它们。