多对多关系的MongoDB模式设计

多对多关系的MongoDB模式设计,mongodb,nosql,many-to-many,schema,Mongodb,Nosql,Many To Many,Schema,我面临着NoSQL模式中多对多关系的问题。我找到了几本指南,有两种方法可以处理它- 将关系存储在两个集合中() 将关系存储在第三个表()中 我认为第二种方法会更好,因为第一种方法中存在重复数据,但我发现第二种方法很困难-如果查询很复杂,则很难提取我需要的内容(例如,根据关键字搜索课程并确定学生注册了哪些课程)。在这种情况下,我发现在第一种方法中查询要容易得多 在NoSQL结构中,哪种方法处理多对多关系更好?在我看来,这两种结构都可以,很难说哪种更好。 下面有一篇好文章: 请参阅第六条规则:“……

我面临着NoSQL模式中多对多关系的问题。我找到了几本指南,有两种方法可以处理它-

  • 将关系存储在两个集合中()
  • 将关系存储在第三个表()中
  • 我认为第二种方法会更好,因为第一种方法中存在重复数据,但我发现第二种方法很困难-如果查询很复杂,则很难提取我需要的内容(例如,根据关键字搜索课程并确定学生注册了哪些课程)。在这种情况下,我发现在第一种方法中查询要容易得多


    在NoSQL结构中,哪种方法处理多对多关系更好?

    在我看来,这两种结构都可以,很难说哪种更好。 下面有一篇好文章: 请参阅第六条规则:“……与MongoDB一样,数据建模方式完全取决于特定应用程序的数据访问模式。您希望数据结构与应用程序查询和更新数据的方式相匹配……”

    Student: [ 
     { _id: 1, name: Hei, courseId: [ 1001, 1002, ... ] }
     { _id: 2, name: Vivian, courseId: [ 1001, 1003, ... ] }, 
    ... ]
    
    Course: [ 
     { _id: 1001, name: Database Design, studentId: [ 1, 2, ... ] }, 
     { _id: 1002, name: Big Data Analysis, studentId: [ 1, ... ] },
    ... ]
    
    Student: [ 
     { _id: 1, name: Hei }, 
     { _id: 2, name: Vivian }, 
    ...]
    
    Course: [
     { _id: 1001, name: Database Design }, 
     { _id: 1002, name: Big Data Analysis }, 
    ...]
    
    Registration: [
     { studentId: 1, courseId: 1001 }, 
     { studentId: 1, courseId: 1002 }, 
     { studentId: 2, courseId: 1001 }, 
     { studentId: 2, courseId: 1003 }, 
    ...]