Mongoose子文档插入到另一个集合中,同时在父模式中保持关系
我正在尝试做下面的事情,想知道是否可以用Mongoose:
-
保留一个子文档Id的数组,以方便使用mongoose的填充方法。
-
将子文档数据存储在另一个集合中
例:
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();
所以可以填充位于不同集合中的子文档。