1

作为工作研究项目的一部分,我正在对 SQL Server 和 MongoDB 进行一些(非常简化的)比较。我熟悉 SQL Server,但这是我第一次涉足 Mongo。我很好奇对此的最佳做法是什么。

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

用户
========
ID
姓名
密码

博客
=========
ID
标题
内容
作者用户 ID

注释
=========
ID
内容
作者用户 ID
博客 ID
父评论 ID

我想,够直截了当吧。如果 ParentCommentId 为 NULL,则评论是直接回复博客,否则,ParentComment 是另一个正在回复的评论。

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

所以在 Mongo 中,我目前有一个包含相同字段的用户集合。

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

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

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

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

所以呃。帮助?

TIA。

4

0 回答 0