如何在NoSQL(MongoDB)中存储注释?

rgt*_*gtk 5 mongodb nosql

1路

注释嵌入在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!"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

2种方法

帖子和评论之间的关系(在单独的文档中)。帖子有很多评论:

// 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!"
}
Run Code Online (Sandbox Code Playgroud)

哪种方法更好?

Mat*_*ias 4

方法一

  • 无需加入 => 快速访问数据
  • NoSQL 的实现方式
  • 每个评论都只与该帖子相关,所以为什么不将它们存储在一起(将标题和正文存储在一起;)

如果您有大文档(>15.5 MB),并且您收到大量评论,那么您可能需要将它们存储在其他地方。这是因为最大文档大小为 16 MB。

方法 2 是 RDMBS 方法,Mongo 没有内置连接,因此您需要在应用程序中执行它们。