作者回复: 无法工作了
作者回复: 头像图片文件,如果只是几十KB那样,完全可以直接放在JSON里面。除非是大到数个MB,就建议分开存放了。 至于是否文件系统,有别的考量了。文件系统不容易扩展,量达到亿/十亿级别管理会很麻烦。
作者回复: 如果我是你,我会选择的是保留JSON格式,但是只留group_id字段。这样的话你只需要更新业务代码,不用停服务更新数据库。然后你可以写个语句把JSON字段里面的其他字段删除掉。整个过程都是线上操作,也不会有不一致数据问题。 如果是你的方案,就是彻底改变一个内嵌字段的类型,那就必须要写个脚本,然后最好是停止业务的访问,进行对数据库数据的修改。
作者回复: 对这个动态模型就是MongoDB的特色。如果是非强类型语言如python / nodejs 会更加简单,直接JSON入库,JSON可以增加属性。 模型处理mongodb端并不需要做任何工作,主要是你Java里面要能够给一个对象动态增加属性,然后把新对象交给Mongo就可以了
作者回复: 之前的版本嵌套超过2层就会导致无法in place update, 需要把整个子文档读到应用端整体修改更新。新版本使用arryFilter可以更新任意深度了,从这个角度上来讲还好。
作者回复: 对的,频繁修改是一个设计的考量,通常这个时候要考虑分出去另外一个集合,通过引用来表示关系。
作者回复: 可以用gridfs