在MongoDB中存储的最佳实践?

时间:2013-07-08 14:16:23

标签: sql sql-server mongodb

作为研究项目的一部分,我正在做一些(大大简化)SQL Server和MongoDB之间的比较。我熟悉SQL服务器,但这是我第一次涉足Mongo。我很好奇最佳做法是什么。

想象一下博客网站。用户可以登录和发布博客。他们还可以对博客发表评论,或回复其他评论。 SQL中的表结构大致如下所示:

Users
========
id
Name
Password

Blogs
=========
id
Title
Content
AuthorUserId

Comments
=========
id
Content
AuthorUserId
BlogId
ParentCommentId

我想,直截了当。如果ParentCommentId为NULL,则注释直接回复Blog,否则,ParentComment是另一个被回复的注释。

我使用一个漂亮的小递归函数来删除树中很远的注释,这也删除了与之关联的任何子注释。

所以在Mongo中,我目前有一个具有相同字段的Users集合。

我想知道的部分是博客/评论。

我最初的冲动是将评论存储为博客的子集。当评论开始回复其他评论时出现问题。对回复树的“深度”没有实际限制。因此,如果我将评论回复存储为评论的子集合,等等,即使在说出4个回复之后,我们仍然在:博客 - >评论 - >评论 - >评论 - >评论 - >评论,或子分子小组。

由于Mongo似乎没有递归查询/删除 - 这很快变得不可行。

所以这就是我难倒的地方。除了完成一些基本的教程之外,我以前从未使用过Mongo,所以我不确定如何在不模仿关系结构的情况下实现这一点,这似乎有点挫败了使用非关系数据库的目的。

呃。救命?

TIA。

0 个答案:

没有答案