作者回复: 总结的很好!
作者回复: 要看这种操作是否频繁。比如说,部门和人员之间的多对多,修改部门是很少见的操作,就可以接受。因为大部分时候是在读,那我们就是优化了读操作。
作者回复: 一般不需要。可以直接在联系人表里面有一个 groups 字段: { _id:xxx, contact_name: 'tj', group_ids:[1, 2, 5] } 对groups字段加个索引就可以快速的根据groupid快速检索该group 的所有成员了。
作者回复: 有可能是和ulimits相关。你看下这个 https://docs.mongodb.com/manual/reference/ulimit/
作者回复: 不是所有的信息都可以嵌套,比如联系人的一些activity/事件。但是联系人的静态属性(相对变化不频繁),则基本都可以内嵌。
作者回复: 可以使用multi-update, 一次更新多条相关语句。mongo 有事务可以支持这个场景。