MongoDB 文档间的关系

  • 一对多

  在MongoDB可以通过内嵌文档的形式来体现出一对一的关系。

db.wifeAndHusband.insert([
    {
        name:"huangrong",
        husband:{
            name:"guojing"
        }
        },
        {
            name:"panjinlian",
            husband:{
                name:"wudalang"
            }
        }
]);

  • 一对多

  例如 用户和订单的关系

用户集合:

db.users.insert([
{
    username:"swk"
},{
username:"zbj"
}
]);

订单集合:

db.order.insert({
    list:["pingguo","xiangjiao","dayali"]
});

现在是一个用户怎样对应多个订单:

db.order.insert({
    list:["pingguo","xiangjiao","dayali"],
    user_id:ObjectId("6013ac7450f3d18a1b865b2a")//用户swk的id
});

 

 查询 swk 的订单

var user_id = db.users.findOne({username:"swk"})._id;
db.order.find({user_id:user_id});

 

  •  多对多

老师和学生的关系

建立老师集合:

db.teachers.insert([
    {name:"hongqigong"},
    {name:"huangyaoshi"},
    {name:"guixianren"}
]);

 

 建立学生集合,通过所属老师的集合变成 多对多。

db.stus.insert([
    {
        name:"guojing",
        tech_ids:[
            ObjectId("6013f17850f3d18a1b865b34"),
            ObjectId("6013f17850f3d18a1b865b35")
        ]
        },
        {
        name:"sunwukong",
        tech_ids:[
            ObjectId("6013f17850f3d18a1b865b34"),
            ObjectId("6013f17850f3d18a1b865b35"),
            ObjectId("6013f17850f3d18a1b865b36")
        ]
    }

]);

 

posted @ 2021-01-29 19:40  创客未来  阅读(157)  评论(0编辑  收藏  举报