MONGOOSE - ObjectId对集合VS Array集合的引用

时间:2015-02-03 18:36:33

标签: mongoose

嗯,我是mongodb / mongoose的新手,所以这些概念在我的脑海中仍然有些混乱。谁能解释一下以下几点之间的区别:

var PersonSchema = new Schema({
    name    : String,
    groups: [{ type: Schema.ObjectId, ref: 'Group' }]
});

var GroupsSchema = new Schema({
    name    : String
});

var PersonSchema = new Schema({
    name    : String,
    groups  : [GroupsSchema ]
});

谢谢!

1 个答案:

答案 0 :(得分:0)

这些是在建模数据时支持embedreference选项的Mongoose方法。

第一种情况使用引用,其中每个groups doc的Person数组字段包含ObjectId个值,用于标识相关_id文档的Group在一个单独的集合中。这有效地将一组外键存储在groups

在第二种情况下,groups数组直接包含(即嵌入)相关的组文档。在这种情况下,不会成为团体的单独集合,并且由应用程序决定是否确保阵列中的任何重复组数据不断更新。