假设是/login
API的情况,其中,对于一组匹配的凭证,应该返回集合中的用户对象,哪种方法会更高效:
1)一个带投影查询的模型:
var UserSchema = new Schema({
name : String,
email : String,
dob : Number,
phone : Number,
gender : String,
location : Object, // GeoJSON format {type: 'Point', geometry: { lat: '23.00', lng: '102.23' }}
followers : [UserSchema],
following : [UserSchema],
posts : [PostSchema],
groups : [GroupSchema]
// ... and so on
});
2)拆分模型:
var UserMinimalSchema = new Schema({
name : String,
email : String,
phone : Number,
location : Object,
});
var UserDetailSchema = new Schema({
dob : Number,
gender : String,
followers : [UserSchema],
following : [UserSchema],
posts : [PostSchema],
groups : [GroupSchema]
// ... and so on
});
让我们说:
对于已登录的用户,仅返回id
,name
,email
,phone
和location
。
第一个模型将使用投影查询返回(1)中的属性。
在第二种情况下,只有UserMinimalSchema
用于查询整个文档。
基本上两个查询都会返回与(1)中提到的数据量完全相同的数据。
假设普通用户对象限制为~16MB,并且有1百万条记录。
如果某人执行了这样的测试/链接到文档,那么分析与否分开将会有多大帮助将是非常有帮助的。
答案 0 :(得分:2)
我不会使用拆分模型: