使用内嵌文档建模多对多关系
创建一个使用将连接数据嵌入到单个文档中,以描述连接数据之间的多对多关系。在单个文档中嵌入连接数据可以减少获取数据所需的读取操作次数。通常,您应该设计您的架构,以便您的应用程序在一次读取操作中接收所有必需的信息。例如,您可以使用嵌入式多对多模型来描述以下关系:
学生与班级
演员与电影
医生与患者
关于此任务
以下示例架构包含有关一本书
和两本书
及其作者的信息。根据您是否预计应用程序用户通过书籍或作者进行查询,您可以使用不同的方式表示关系。
如果您预计通过书籍进行查询的用户多于通过作者进行查询的用户,则示例架构是一个有效的选择。但是,如果您预计通过作者进行查询的查询较多,则将作者作为顶级信息,并将作者的书放在嵌入式字段中。
示例
您可以使用多对多关系来描述书籍和作者。一本书可以有多个作者,一个作者可以写多本书。
嵌入式文档模式
应用程序需要在单个页面上显示书籍和作者对象的信息。为了允许应用程序通过单个查询检索所有必要的信息,在相应的书籍文档中嵌入作者信息
{ _id: "book001", title: "Cell Biology", authors: [ { author_id: "author124", name: "Ellie Smith" }, { author_id: "author381", name: "John Palmer" } ] } { _id: "book002", title: "Organic Chemistry", authors: [ { author_id: "author290", name: "Jane James" }, { author_id: "author381", name: "John Palmer" } ] }