2012-06-27 26 views
0

所以我有一個模式與人和組。我想讓一個人能夠與一個或多個人或團體相關聯。到目前爲止,我有這樣的:如何使一組多種類型的貓鼬模式?

var PersonSchema = new Schema({ 
    name : String, 
}); 
var PersonModel = mongoose.model('Person', PersonSchema); 

var GroupSchema = new Schema({ 
    name : String, 
    members : [PersonSchema] 
}); 
var GroupModel = mongoose.model('Group', GroupSchema); 

如何添加到PersonSchema一組一個或多個組和/或其他人?

回答

0

假設您在數據庫中同時擁有PersonsGroups集合,您可以將ObjectId引用數組添加到PersonSchema以捕獲人與其他人或組的關係。如:

var PersonSchema = new Schema({ 
    name : String, 
    people: [{ type: Schema.ObjectId, ref: 'Person' }], 
    groups: [{ type: Schema.ObjectId, ref: 'Group' }] 
}); 

然後你可以使用貓鼬的populate支持遵循這些裁判時,你需要他們的全部細節。

0

可以定義像:

var Relation = new mongoose.Schema({ 
RelationType:String, RefObjId: String //You can also take Schema.ObjectId 
}); 

var PersonObj = new mongoose.Schema({ 
name: String, 
OtherDetails: String, 
RefObjDetails:[Relation] 
}); 

實施例:

A(_id:100)人涉及B(_id:200)和人到組MyGroup的(_id:333)。

JSON的樣子:

{ 
'_id':'100', 
'name': 'A', 
'OtherDetails': '', 
'RefObjDetails':[{'RelationType':'P', RefObjId:'200'},{'RelationType':'G', RefObjId:'333'}] 
}