Mongoose子文档插入到另一个集合中,同时在父模式中保持关系

我正在尝试做下面的事情,想知道是否可以用Mongoose:

  1. 保留一个子文档Id的数组,以方便使用mongoose的填充方法。

  2. 将子文档数据存储在另一个集合中

例:

var ParentSchema = new Schema({ children : [{ type: Schema.ObjectId, ref: 'Child' }] }); mongoose.model('Parent', ParentSchema); var ChildSchema = new Schema({ name : { type: String} }); mongoose.model('Child', ChildSchema); 

这就是我想让我的数据库看起来像:

 Parents { children:[{ObjectId("52856528cb28bdc18acac23a")},{ObjectId("52856528cb28bdc18acac23b")}] } Childs [{ _id: ObjectId("52856528cb28bdc18acac23a") name: "John" }, { _id: ObjectId("52856528cb28bdc18acac23b"), name: "bob" }] 

我想轻松地通过执行以下操作来调用填充:

 Parents.find({}).populate(Parents.children).exec(); 

填充方法是否能够以这种方式连接一组数据? 此外,我将如何将Id的集合存储在父模式中,并将子文档存储在子模式中(并且可以稍后使用填充方法执行此操作)?

请注意,这个引用: http : //mongoosejs.com/docs/subdocs.html做我想要的,除了我打算将子文档存储在另一个集合不作为embedded式文档。

先谢谢你

 var Child = mongoose.model('Child'), Parent = mongoose.model('Parent'); var parent = new Parent; var child = new Child({name: "bob"}); child.save(function(err, child){ parent.children.push(child); parent.save(); }) 

此代码工作:

 Parents.find({}).populate(children).exec(); 

所以可以填充位于不同集合中的子文档。