首页 文章

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

提问于
浏览
2

我正在尝试做以下事情并想知道是否可以使用Mongoose:

  • 保留一个子文档Id的数组以便于使用mongoose的populate方法 .

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

例:

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"
}]

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

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

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

请注意,此引用:http://mongoosejs.com/docs/subdocs.html执行我想要的操作,但我打算将子文档存储在另一个集合中,而不是作为嵌入式文档 .

先感谢您

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();
})

1 回答

  • 2

    这段代码有效:

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

    因此,可以填充位于单独集合中的子文档 .

相关问题