评论回复架构的mongoDB表设计,please... 救救可怜的孩子吧...

慕飒潇湘 2020-10-27 02:11:15
做爬虫爬取了一些问答数据存储在MongoDB数据库,我的单个字典设计是:{"k1":"问答的题目","url":"文档的链接地址","k2":"问答的时间","k3":"回答条数",{"张三":"他的回答是.....","李四":"他的回答是.....","王五":"他的回答是....."}},我的数据结构是这样的,唯一不会变的就是k1和url,也就是问答的题目和问答文档的链接地址不会变,其余的在任何时候任何人都会去评论,所以这个字典会定时更新,这样具体该怎么做,数据怎么操作存储,怎么操作查询啊
...全文
202 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
crifan 2020-10-28
  • 打赏
  • 举报
回复
其实前面的设计,没啥问题,也是常见的设计。冗余并不大,或者说并不会有什么冗余。

反倒是用你自己的单表设计,在第一次之后的爬取中,每次保存时,会更加麻烦:
因为对于每个answer的list中的内容都要判断是否有重复的
且也不够严谨,万一有2个人回复了同样的内容,比如“赞”,你不知道是多次爬取的重复导致,还是单次爬取正常内容但只是相同回复

建议:用别人的设计

另外,如果你非要用自己的,也不是不可以。

此处顺带帮你优化了你的单表的字段和结构


{
"question_title": "问题的题目",
"question_url": "问题的链接地址",
"qestion_created_time": "问答的时间",
"answers": {
"total_num": "回答条数",
"list": [
{
"张三": "他的回答是.....",
"李四":"他的回答是.....",
"王五":"他的回答是....."
}
]
}
}
慕飒潇湘 2020-10-27
  • 打赏
  • 举报
回复
引用 1 楼 陈年椰子 的回复:
我看了需求, 大概觉得应该满足需求,供参考: 两个表 问题信息表 question_tbl ( qid 自动增加字段 k1 url ) 回答信息表 anwser_tbl ( aid 自动增加字段 qid 问题表ID anwser_name 回答人 anwser_comment 回答内容 anwser_time 回答时间 ) question_tbl 和 anwser_tbl 用 qid 关联。 根据 anwser_tbl 里的qid 分组统计出k2(最后回答时间) , k3(数量)
你的这个思路我明白了,确实可以做到,但是实际我这数据量太大了,很多评论有70-80条,数据冗余量太大了,问答的条目也有几十万条,网上说问答类型数据用MongoDB存储是最合适的,但是我担心就是第一次爬取没问题,重复爬取的时候会造成数据冗余,实际上问答的题目权重是最大的,永远不会变,其他数据会有更新字典继续插入就行,就像简易版的博客评论系统的存储一样,只是我操作起来没有头绪,不知道从哪里开始
陈年椰子 2020-10-27
  • 打赏
  • 举报
回复
我看了需求, 大概觉得应该满足需求,供参考: 两个表 问题信息表 question_tbl ( qid 自动增加字段 k1 url ) 回答信息表 anwser_tbl ( aid 自动增加字段 qid 问题表ID anwser_name 回答人 anwser_comment 回答内容 anwser_time 回答时间 ) question_tbl 和 anwser_tbl 用 qid 关联。 根据 anwser_tbl 里的qid 分组统计出k2(最后回答时间) , k3(数量)

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧