作为工作研究项目的一部分,我正在对 SQL Server 和 MongoDB 进行一些(非常简化的)比较。我熟悉 SQL Server,但这是我第一次涉足 Mongo。我很好奇对此的最佳做法是什么。
想象一个博客网站。用户可以登录并发布博客。他们还可以对博客发表评论,或回复其他评论。SQL中的表结构大致如下:
用户 ======== ID 姓名 密码 博客 ========= ID 标题 内容 作者用户 ID 注释 ========= ID 内容 作者用户 ID 博客 ID 父评论 ID
我想,够直截了当吧。如果 ParentCommentId 为 NULL,则评论是直接回复博客,否则,ParentComment 是另一个正在回复的评论。
我使用了一个漂亮的小递归函数来删除树中很远的评论,这也会删除与之关联的任何子评论。
所以在 Mongo 中,我目前有一个包含相同字段的用户集合。
我想知道的部分是博客/评论。
我最初的冲动是将评论存储为博客的子集合。当评论开始回复其他评论时,问题就出现了。回复树的“深度”没有实际限制。因此,如果我将评论回复存储为评论的子集合,依此类推,即使在说 4 个回复之后,我们仍处于:博客 -> 评论 -> 评论 -> 评论 -> 评论 -> 评论,或一个子子-子子集合。
由于 Mongo 似乎没有递归查询/删除 - 这很快就会变得不可行。
所以这就是我难过的地方。除了学习一些基本教程之外,我以前从未使用过 Mongo,所以我不确定如何在不模仿关系结构的情况下完成此任务,这似乎有点违背使用非关系数据库的目的。
所以呃。帮助?
TIA。