Mongoose嵌套模式与嵌套模型

嵌套schema(子文档)与创build两个独立模型并引用它们之间的区别是什么?它们的性能如何?

子文档:

const postSchema = new Schema({ title: String, content: String }); const userSchema = new Schema({ name: String, posts: [postSchema] }); module.export = mongoose.model('User', userSchema); 

嵌套模型(通过引用填充):

 const postSchema = new Schema({ title: String, content: String, author: { type: String, ref: 'User' } }); module.export = mongoose.model('Post', postSchema); const userSchema = new Schema({ name: String, posts: [{ type: Schema.Types.ObjectId, ref: 'Post'}] }); module.export = mongoose.model('User', userSchema); 

编辑:这不是一个重复的问题。

在这个问题: Mongoose子文档vs嵌套模式 – mongoose子文档和嵌套模式是完全一样的。 但嵌套模型在数据库中创build一个单独的集合。 我的问题是嵌套架构vs嵌套模型差异,而不是子文档vs嵌套模式。

使用子文档时,您实际上拥有父文档中的数据副本,可以让您在单个查询中获取所有文档+子文档数据。

当使用“嵌套模型”时,您并不是真正嵌套它们,而是从父模型引用到子模型。 在这种情况下,您必须使用人口 ,这意味着您无法在单个查询中获取所有数据。

简而言之 :子文档实际上嵌套数据,而“嵌套模型”只能通过它们的id引用它们