假设我有一个包含大约30个字段的用户架构,还有其他3个架构。
UserSchema.js
user_schema = new Schema({
user_id: { type: String},
.........//30 properties
});
ctrs_schema = new Schema({
.........10 properties
});
ids_schema = new Schema({
.........5 properties
});
comments_schema = new Schema({
.........10 properties
});
现在,我正在编写一条将更改用户性别的路由,现在可以使用 UserSchema.js 来执行此操作,但是它将所有模式加载到我的路由中,而如果我要创建一个只有一个具有两个字段的模式的新文件,则不会将所有模式加载到该路由的内存中。
UserGenderSchema.js
gender_schema = new Schema({
user_id: { type: String},
gender: { type: String}
});
我知道两种方法都有优点和缺点
专家-
如果必须更改某些内容,则只需要在单个文件中进行编辑 用于任何字段。
缺点-
所有不必要的所有路由都在加载所有模式。记忆 浪费了。
两种线程之间的内存使用量会更少吗?
任何人都可以告诉我哪种架构会更好,或者您在项目中实现什么,为什么?
谢谢
答案 0 :(得分:1)
最好将用户相关字段保留在一个模式中,因为mongo由于其非关系结构而一直存在,并且它通过保持关系结构而获得了性能,因此,如果为每个字段创建一个模式然后创建他们每个人都有一个引用来指出与他们相关的用户,您有点在使用mongo建立紧密的关系结构,而mongo并不好,因为在这种情况下应该如此,因此,如果稍后在您的应用程序上,您想要要以某种方式显示用户的所有信息,或者尝试更新用户的多个字段,或者尝试在一条路线或某条路径中显示用户的更多信息,您最终将遇到一些严重的性能问题。得出的结论是,加载所有架构以仅涉及一个字段的代价并不比破坏数据结构的代价高。