我正在网上爬行新闻报纸网站。
该站点包含文章,其中包含标题,一些文本,时间戳,作者和评论部分。
评论部分包含来自不同注册用户的评论,他们可以在其中评论文章,支持评论并回复其他评论。
我正在使用MongoDB(初学者),我的问题是在JSON对象中保存的内容是什么。
例如,每个新闻文章都将是一个对象,其中包含所有用户评论。或者将每个文本/注释作为自己的对象会更易读。
{"article": {
"id": "title of article",
"text": "text of article",
"author": "author of article",
"date": "date",
"comment_section": {
"user": "username",
"text": "text from comment",
"upvotes": int,
},
}}
或类似的东西:
{"text": {
"text_type": "article text or comment",
"text": "text of article or comment",
"date": "date",
"author": "author of article or comment author",
"upvotes": int,
}}
第一个示例中的对象较少,但是其中包含很多东西,而第二个示例中的对象却很多,但其中没有很多数据。
谢谢。
json的全部功能在于它是一棵树,因此单个文档可以包含其中的所有数据。您可以在子文档和投影上添加索引,以仅查询文档的必要部分。
但是,如果您希望注释部分很大,则嵌入的注释可能是个问题,因为mongodb必须读取整个文档,在注释列表中添加新的注释,然后再写回去。
理想情况下,您将寻求一个中间解决方案:保持嵌入的注释,直到少于20到50(也随文章和“下一个注释”按钮一起呈现),然后切换以将传入的注释保留在提取评论集合。这样,您可以使用单个mongo查询来呈现您的文章,从而在每次用户交互时有效地进行一个mongo查询-这是数据库设计的首选方法。
使用mongo,您将始终不得不在对象大小+更新量与将数据提取到外部集合并对它进行额外查询之间的成本之间进行权衡。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句