node.js - Mongoose 子文档插入到另一个集合中,同时在父模式中保留关系

标签 node.js mongodb express mongoose

我正在尝试执行以下操作,并想知道 Mongoose 是否可以实现:

  1. 保留子文档 ID 数组,以便于使用 mongoose 的 populate 方法。

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

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

请注意此引用: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();
}) 

最佳答案

此代码有效:

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

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

关于node.js - Mongoose 子文档插入到另一个集合中,同时在父模式中保留关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22566391/

相关文章:

javascript - 如何从 Node 包库内部需要根项目目录中的内容?

mongodb - Node.js 和 Mongoose,太慢无法将 Schema 定义放在单独的文件中?

javascript - 将参数传递给函数导出 Node

javascript - 尝试在 Docker 上运行简单的 Express 服务器,但无法访问任何路由

node.js - 检查输入是否有空格并使用 Express 显示错误消息的最佳方法

javascript - 循环遍历数组并根据先前查询的结果对数组中的每个条目执行 My SQL 查询

mongodb - 无法连接到工作的Dockerized Mongo ReplSet

mongodb - 如何将两个数组连接到对象的字段中

session - Backbone、Node、Session 验证,我的方法有效,但请告诉我它是否正确

linux - 是否有任何用于将 nodejs 应用程序上传到我自己的 linux 服务器的 linux 脚本?像 appfog 或 heroku