在模式(子文档)中嵌套模式与创建两个单独的模型并引用它们之间有什么区别,它们的性能如何?
子文件:
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);
Edit:这不是一个重复的问题。
在这个问题中:Mongoose 子文档与嵌套架构 https://stackoverflow.com/questions/15208711/mongoose-subdocuments-vs-nested-schema- mongoose 子文档和嵌套模式完全相同。
但嵌套模型在数据库中创建单独的集合。
我的问题是嵌套模式与嵌套模型的区别是什么,而不是子文档与嵌套模式的区别。
使用子文档时,您实际上在父文档中拥有数据的副本,这允许您在单个查询中获取所有文档+子文档数据。
使用“嵌套模型”时,您并不是真正嵌套它们,而是从父模型引用子模型。在这种情况下你必须使用人口 http://mongoosejs.com/docs/populate.html,这意味着您无法在单个查询中获取所有数据。
In short:子文档实际上嵌套了数据,并且您的“嵌套模型”仅通过其 id 引用它们
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)