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 添加一组一个或多个组和/或其他人?

4

2 回答 2

0

假设您的数据库中同时拥有PersonsGroups基于此的集合,您可以将 ObjectId 引用数组添加到 PersonSchema 以捕获一个人与其他人或组的关系。如:

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

然后,您可以populate在需要完整详细信息时使用 mongoose 的支持来关注这些参考。

于 2012-06-27T19:28:37.087 回答
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) Person 与 B (_id:200) Person 和组 MyGroup (_id:333) 相关。

JSON 将如下所示:

{
 '_id':'100',
 'name': 'A',
 'OtherDetails': '',
 'RefObjDetails':[{'RelationType':'P', RefObjId:'200'},{'RelationType':'G', RefObjId:'333'}]
}
于 2013-01-08T11:03:40.563 回答