0

我是 MongoDB 新手,我只是想创建一个简单的项目来测试 MongoDB 的性能 该项目就像一个简单的 CMS,它有用户、博客和评论,用户可以有朋友

所以我这样设计我的数据库

user
{
     _ID:
    name:
    birth_day:
    sex:

    friends:[id_1,Id_2]
}
blogs
{
    title:
    owner: 
    tags_fiends:
    comments:
    [
        {"_id":"","content":"","date_created":""},
        {"_id":"","content":"","date_created":""},
    ],
    "like"={"_id","_id"}
}

以及该数据库需要多少个集合。我可以为用户和博客使用 1 个集合吗?在此先感谢。

4

2 回答 2

1

由于 mongoDB 是少模式或无模式数据库,您可以在文档中创建任何类型的结构,支持:

  • 个别元素
  • 嵌套数组
  • 嵌套文档

在架构设计过程中,您必须考虑几件事,因为将用户和博客放在分开的架构中很有用。例如,如果您将某些内容存储在嵌套数组中,则可以指定索引以在该数组中固定搜索,但在一个特定集合中只能有一个多键索引(索引数组内容)。因此,如果您将朋友和博客、帖子和标签全部存储在数组中,您只能在其中一个上拥有索引。

同样重要的是要知道在这种情况下每个文档的大小限制现在是 16MB。

于 2013-01-28T12:05:54.660 回答
0

在您的场景中,我会让用户成为一个集合,并通过博客集合中的 _id 引用它。

在实践中,您可以将博客设置为用户的属性,唯一的限制是最大文档大小为 16MB - 但这是很多博客(文本)。

为了解决这个问题(假设您需要),引用用户 _id 的单独博客集合就可以了。如果那不是您的 _id,您可能也需要对用户名进行非规范化。这意味着您可以在单个查询中获取用户的所有博客。

于 2013-01-28T12:02:09.133 回答