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") ] } ]);