搜尋

首頁  >  問答  >  主體

MongoDB 多對多的關係該怎麼描述?

例如下面這種學生選課的模型,既要知道學生選了哪些課,又要知道課被哪些學生選了。傳統的 SQL 就是下面這寫法了,如果換成 key-value 的,該怎麼描述呢?

Student:
    Id
    Name

Course:
    Id
    Name

Relation:
    Student_Id
    Course_Id
阿神阿神2844 天前726

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-24 09:13:26

    可以這樣設計,collection裡面每個文件儲存一個學生的選課資料:

    // students
    {
        _id: ObjectId('4e7020cb7cac81af7136236b'),
        name: "...",
        choose_lesson: [
            {_id:ObjectId('4e7020cb7cac81af71362361'),
             lesson_name: "..."
            },
            {_id:ObjectId('4e7020cb7cac81af71362362'),
             lesson_name: "..."
            }
        ]
    }
    

    學生選了哪些課?

    db.students.find(
        {_id: ObjectId('4e7020cb7cac81af7136236b')},
        {choose_lesson: 1}
    )
    

    一門課有哪些學生選擇?

    db.students.find(
        {choose_lesson: {$elemMatch: {lesson_name: "..."}}},
        {name: 1}
    )
    

    參考了mongodb 用戶按讚功能怎麼設計比較合理?

    回覆
    0
  • 阿神

    阿神2017-04-24 09:13:26

    在這個業務上,我覺得是一樣的。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-24 09:13:26

    在Relation中直接儲存Student的Id和Course的Id,或用DBRefs。個人覺得前者就行。 可參考:http://docs.mongodb.org/manual/reference/database-references/。

    回覆
    0
  • 取消回覆