在架构(子文档)中嵌套架构与创建两个单独的模型并引用它们之间有什么区别,它们的性能如何?
子文档:
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 subdocuments vs nested schema- Mongoose 子文档和嵌套模式完全相同。
但是嵌套模型会在数据库中创建一个单独的集合。
我的问题是,嵌套架构与嵌套模型之间的差异是什么,而不是子文档与嵌套架构之间的差异。
最佳答案
使用子文档时,实际上您在父文档中有一个数据副本,这使您可以在单个查询中获取所有文档+子文档数据。
使用“嵌套模型”时,您并不是真正在嵌套它们,而是从父模型引用到子模型。在这种情况下,您必须使用population,这意味着您无法在单个查询中获取所有数据。
简而言之:子文档实际上嵌套了数据,而您的“嵌套模型”仅通过其ID引用它们
关于node.js - Mongoose 嵌套模式与嵌套模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42290217/