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。)我必须用ref不embed?然后我必须创建一个新的评论集合?
4 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
如果我想编辑指定的评论,如何获取其内容及其问题?
您可以按子文档查询:db.question.find({'comments.content' : 'xxx'})
。
这将返回整个问题文件。要编辑指定的注释,您必须在客户端上找到注释,进行编辑并将其保存回数据库。
通常,如果您的文档包含一个对象数组,您将发现这些子对象需要在客户端进行修改。
幕布斯6054654
TA贡献1876条经验 获得超7个赞
好吧,我有点迟了但仍想分享我的架构创建方式。
我有一些可用一个词描述的模式,就像你在经典的OOP中所做的那样。
例如
评论
帐户
用户
博文
...
每个模式都可以保存为Document或Subdocument,因此我为每个模式声明了这一点。
文献:
可以作为参考。(例如,用户发表了评论 - >评论对用户有“制作者”的引用)
在您的应用程序中是“根”。(例如博客帖子 - >有关于博客帖子的页面)
子文档:
只能使用一次/永远不是参考。(例如评论保存在博文中)
在您的应用程序中永远不是“根”。(评论只显示在博客页面中,但页面仍然是关于博客帖子)
- 4 回答
- 0 关注
- 1349 浏览
添加回答
举报
0/150
提交
取消