有没有一种方法可以将两个对象ID的mongoose关联起来

我有一个GroupUser架构,而adding group映射usersuser可以属于多个groups

我有一个下面的PartySchemausergroups

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

我在一个table structure中显示了在我的Party页面的checkbox中的映射,并select了“ Party ”组和其用户,

 -- Groups ---- Users 

您可以以checkbox style[Parent[Group]-Children[User]]select一个组及其用户。 在PartySchema ,我将分别更新所选groups和选定users作为reference不是作为文档。PartySchema

  user: [{ type: Schema.ObjectId, ref: 'Person' }], groups: [{ type: Schema.ObjectId, ref: 'Group' }] 

我只是得到两个group ID和users ID,与此我不能说为"Group1" ”Shane已被选中,而不是"Group2" ,因为从以前的关系“Shane”属于两个组,但同时添加方I我只从Group2中select“shane”而不是Group1。

在编辑派对页面时,我再次获得所有的组和用户,在这个我不能说在组2中select“Shane”作为“组1”也有“Shane”和“Group2”也有shane和我们将其保存为参考而不是文档。

 -- Group1 ---- Shane [Not selected] -- Group1 ---- Shane [selected] 

方式

  var Party = new Schema({ name : String, user_group: [{user:{ type: Schema.ObjectId, ref: 'Person' },group:{ type: Schema.ObjectId, ref: 'Group' }}] groups: [{ type: Schema.ObjectId, ref: 'Group' }] }); 

党的对象

 var party = new Party({ name: "Haloween Party", user_group: [{ user: shane._id, group: group1._id }, { user: userX._id, group: group1._id }, { user: userY._id, group: group2._id }], groups:[group1._id,group2._id] }) 

保存缔约方并查询所有现有缔约方

 party.save(function(error) { if (!error) { Party.find({}) .populate('user_group.user') .populate('user_group.group') .populate('groups') .exec(function(error, parties) { console.log(JSON.stringify(parties, null, "\t"))//or just parties }) } }); 

党的文件在DB (这样的事情)

 { "_id" : ObjectId("54cd6669d3e0fb1b302e54e6"), "name" : "Haloween Party", "user_group" : [ { "user" : ObjectId("54cd6669d3e0fb1b302e5411"), "group" : ObjectId("54cd6669d3e0fb1b302e54e5"), "_id" : ObjectId("54cd6669d3e0fb1b302e54e8") }, { "user" :ObjectId("54cd6669d3e0fb1b302e5412"), "group" : ObjectId("54cd6669d3e0fb1b302e54e4"), "_id" : ObjectId("54cd6669d3e0fb1b302e54e7") } ], "groups":[ObjectId("54cd6669d3e0fb1b302e54e5"),ObjectId("54cd6669d3e0fb1b302e54e4")] "__v" : 0 } 

Git回购示例参考https://github.com/AlexZeitler/mongoose-schema-reference-sample