MongoDB关系:嵌入还是引用?

MongoDB关系:嵌入还是引用?

我是MongoDB的新手 - 来自关系数据库背景。我想设计一个带有一些注释的问题结构,但我不知道用于评论的关系:embed或者reference

有一些注释的问题,比如stackoverflow,会有这样的结构:

Question
    title = 'aaa'
    content = bbb'
    comments = ???

首先,我想使用嵌入式注释(我认为embed在MongoDB中推荐),如下所示:

Question
    title = 'aaa'
    content = 'bbb'
    comments = [ { content = 'xxx', createdAt = 'yyy'}, 
                 { content = 'xxx', createdAt = 'yyy'}, 
                 { content = 'xxx', createdAt = 'yyy'} ]

很清楚,但我担心这种情况:如果我想编辑指定的评论,我该如何获取其内容及其问题?没有_id让我找到一个,也没有question_ref让我找到它的问题。(我是新手,我不知道如果没有_id和没有任何方法可以做到这一点question_ref。)

我必须用refembed?然后我必须创建一个新的评论集合?


qq_笑_17
浏览 1308回答 4
4回答

千巷猫影

如果我想编辑指定的评论,如何获取其内容及其问题?您可以按子文档查询:db.question.find({'comments.content' : 'xxx'})。这将返回整个问题文件。要编辑指定的注释,您必须在客户端上找到注释,进行编辑并将其保存回数据库。通常,如果您的文档包含一个对象数组,您将发现这些子对象需要在客户端进行修改。

幕布斯6054654

好吧,我有点迟了但仍想分享我的架构创建方式。我有一些可用一个词描述的模式,就像你在经典的OOP中所做的那样。例如评论帐户用户博文...每个模式都可以保存为Document或Subdocument,因此我为每个模式声明了这一点。文献:可以作为参考。(例如,用户发表了评论 - >评论对用户有“制作者”的引用)在您的应用程序中是“根”。(例如博客帖子 - >有关于博客帖子的页面)子文档:只能使用一次/永远不是参考。(例如评论保存在博文中)在您的应用程序中永远不是“根”。(评论只显示在博客页面中,但页面仍然是关于博客帖子)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB