Mongodb数据库设计使用嵌套还是引用?
发布于 9 年前 作者 snowdream 8614 次浏览 最后一次编辑是 8 年前 来自 问答

举个例子,一个blog,支持评论。 是使用嵌套方式存储呢,还是引用方式?

使用嵌套方式查询快,但是假如我要更新一个用户的头像网址怎么办?

如果使用引用方式,查询次数可能会有很多。

请大家指导一下,谢谢~

嵌套:

{ “post”: { “id”: 0, “content”: “content”, “comments”: [ { “author”: “author1”, “avator”: “http://…/a.jpg”, “comment”: “comment1” } ] }

引用:

{ “post”: { “id”: 0, “content”: “content”, }

{ “comment”: { “post_id”: “0”, “author”: “author1”, “avator”: “http://…/a.jpg”, “comment”: “comment1” } }

3 回复

这个主要还是要根据你业务来看吧。 一、嵌套方法 有点:快速、高效、简单 缺点:需要定期去更新用户信息,这个频度不好把握。 现有的线上方案,如豆瓣用户的信息修改,是一个星期还是一个月只能修改一次(不太记得了)。所有可以采取这个方案,让用户不要频度太高的更新资料。 解决方案:有个服务定期去更新同步两个文档自己的相关信息。(例如:PV在凌晨3点最低的时候)

二、引用方式 优点:两个文档的数据同步更新。 缺点:查询耗时。如果是个频繁调用的功能,缺点会被放大。

建议: 考虑当前APP的体量和用户的特征。比如可以选择折中的方式,例如采用嵌套方式,可以更新头像时,将频繁调用的数据更新,一般的数据,放到后面定时更新等等。

@vczero 非常详细,感谢!~

@snowdream 一起追node.js &前端

回到顶部