MONGOOSE - ObjectId 引用集合 VS 集合数组

MONGOOSE - ObjectId reference to collection VS Array of collection

好吧,我是 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 ]
});

谢谢!

这些是在对数据建模时支持 embed or reference 选项的 Mongoose 方式。

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

在第二种情况下,groups 数组直接包含(即嵌入)相关组文档。在这种情况下,不会有单独的组集合,这取决于您的应用程序以确保数组中任何重复的组数据得到一致更新。