基于查询后的填充成本似乎是直截了当的,因为可以通过单个数组内查询LIMITED将引用的元素附加到查询中找到的元素(输出元素的数量),但是什么是查找人口的成本,以及随后在查找查询中使用的成本?这是否有必要在查询之前将所有引用的文档加载到内存中,从而导致潜在的巨型内存消耗,或者可能造成N + 1时间消耗?
以以下摘录为例:
const user = ...some user obj here...
const schema = mongoose.Schema({
author: {type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true},
title: {type: String, required: true},
....
});
// define query middleware:
schema.pre('find', function () {
this.populate('author');
});
const bookModel = mongoose.model('Book', schema);
使用预加载的作者文档来查找查询:
// find all books with given author:
bookModel.find({ author : {_id: user._id} }).limit(10);