没有绝对。Mongo难的地方就在于没有范式约束,数据模型设计需要根据需求灵活多变,初学者往往容易在上面犯错误。例如同样是作者与书的关系,可以设计出不同的数据模型: // 作者 { _id: 1, name: '张三', birthday: '1988-10-10' } // 书 { isbn: '...', title: '...', author: 1 } 或者 { isbn: '...', title: '...', author: { name: '张三', birthday: '1988-10-10' } } 如果作者信息经常变化,我可能会选择第一种设计;反之可能选择第二种。显然第二种在查询的时候效率高,在涉及作者信息修改的时候效率就低了。那么到底读的效率对你更重要还是修改的效率对你更重要?这将决定你采用哪种设计。对应的到底是查单表还是查多表也就相应的改变了。
没有绝对。Mongo难的地方就在于没有范式约束,数据模型设计需要根据需求灵活多变,初学者往往容易在上面犯错误。例如同样是作者与书的关系,可以设计出不同的数据模型:
或者
如果作者信息经常变化,我可能会选择第一种设计;反之可能选择第二种。显然第二种在查询的时候效率高,在涉及作者信息修改的时候效率就低了。那么到底读的效率对你更重要还是修改的效率对你更重要?这将决定你采用哪种设计。对应的到底是查单表还是查多表也就相应的改变了。