Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将其存储在MongoDB中的最佳实践?_Sql_Sql Server_Mongodb - Fatal编程技术网

Sql 将其存储在MongoDB中的最佳实践?

Sql 将其存储在MongoDB中的最佳实践?,sql,sql-server,mongodb,Sql,Sql Server,Mongodb,作为工作研究项目的一部分,我正在对SQL Server和MongoDB进行一些(大大简化的)比较。我熟悉SQL server,但这是我第一次涉足Mongo。我很好奇这方面的最佳做法是什么 想象一个博客站点。用户可以登录并发布博客。他们也可以在博客上发表评论,或者回复其他评论。SQL中的表结构大致如下所示: Users ======== id Name Password Blogs ========= id Title Content AuthorUserId Comments =======

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

想象一个博客站点。用户可以登录并发布博客。他们也可以在博客上发表评论,或者回复其他评论。SQL中的表结构大致如下所示:

Users ======== id Name Password Blogs ========= id Title Content AuthorUserId Comments ========= id Content AuthorUserId BlogId ParentCommentId 使用者 ======== 身份证件 名称 密码 博客 ========= 身份证件 标题 内容 AuthorUserId 评论 ========= 身份证件 内容 AuthorUserId 博客 父注释ID 我想这很简单。如果ParentCommentId为NULL,则该评论直接回复博客,否则,ParentComment是另一条被回复的评论

我使用一个漂亮的小递归函数来删除树中较低位置的注释,这也会删除与其关联的所有子注释

因此,在Mongo中,我目前有一个具有相同字段的用户集合

我想知道的是博客/评论

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

由于Mongo似乎没有递归查询/删除,因此很快就无法运行

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

所以呢。帮忙


TIA。

如果我是你,你所说的就是我在mongo储存它的方式。我不明白为什么需要递归查询/删除?每次你查询博客时,你都希望它的评论和子元素作为子文档,因为它“实际上”有一个树状结构,当你删除评论时,它将删除该评论的所有子文档,这可能是您希望发生的事情,因为如果没有“家长”的评论,子评论将不再相关。“博客和评论”问题经常被问到。MongoDB文档讨论了各种选项:。。。例如,如果注释存储为单独的文档,则可以查询特定的祖先并删除具有该祖先的文档。