如何更新mongoose中的引用数组

我有一个Group Collection,它有一个Reference的成员数组。 两个对象如下所示相互连接。 当我向该组添加新成员时,Group对象的成员字段需要更新。 我怎么能用mongoose update操作符来做到这一点。

 var MemberSchema = new Schema({ name:{ type:String, default:null }, user_id:{ type : Schema.ObjectId, ref : 'User', default : null } }); var GroupSchema = new Schema({ name:{ type:String, default:null }, description:{ type:String, default:null }, members:[MemberSchema], },{collection:"groups"}); 

先谢谢你。

更新

我添加了一个组的样本文件。

 { "_id" : ObjectId("586a2e694467c41218b302c3"), "members" : [ { "_id" : ObjectId("586a2e694467c41218b302c6"), "user_id" : ObjectId("58171d75e72bf516f92dcd4e"), "name" : "Lakmal Kapukotuwa" }, { "_id" : ObjectId("586a2e694467c41218b302c5"), "user_id" : ObjectId("5821807516325e127f59438e"), "name" : "Prasad Perera" }, { "_id" : ObjectId("586a2e694467c41218b302c4"), "user_id" : ObjectId("586263515356e908de6c899a"), "name" : "Sadun Prasad" } ], "description" : "Des 1", "name" : "My group", "__v" : 0 } 

如果您将新成员作为具有以下结构的对象列表发送,例如

 membersListToAdd = [ { "user_id": "58171d75e72bf516f92dcd4e", "name": "foo" }, { "user_id": "5821807516325e127f59438e", "name": "bar" } ] 

然后在更新中使用$push$each修饰符,如下所示:

 var query = { name: 'My Group' }, options = {}, callback = function (err, result) { console.log(result); }; Group.update(query, { $push: { members: { $each: membersListToAdd } } }, options, callback) 

你做错了,

不需要在两个集合中都有链接,也不需要嵌套模型

试试这个

 var Group = mongoose.model("Group", new Schema({ name: { type:String }, description: { type:String }, })); Group.virtual("users", { ref: "User", localField: "_id", foreignField: "groups" }); var User = mongoose.model("User", new Schema({ name:{ type:String }, groups: [{ type : Schema.ObjectId, ref : 'Group' }] }));