假设我有一个包含引用其他集合中文档的字段的集合,如下所示:
ClassEnrollment
_id | student | class
---------------------
并且Class集合中的类具有以下模式:
_id | className | teacher | building | time | days | classNumber | description
------------------------------------------------------------------------------
如果我要在服务器上填充一组3000个类,我可能会执行类似ClassEnrollment.populate(listOfClassEnrollments, {path: 'class'});
在我的情况下,我不会想要大多数类字段,只是名称。如果我从db获取所有字段的3000个类的列表,我最终会以网络延迟的形式出现性能损失(这些3000个类必须从托管数据库传输到服务器,这可能是50 MB原始数据,如果描述很长)
有没有办法通过填充选项填充类名称列表,只有名称填充(在幕后我想它会像投影一样工作,所以db只响应类名和_id而不是全部班级信息)?
答案 0 :(得分:10)
您可以使用populate
来电中的select
选项执行此操作:
ClassEnrollment.populate(listOfClassEnrollments, {path: 'class', select: 'className'});
要指定多个字段,请使用以空格分隔的列表:
ClassEnrollment.populate(
listOfClassEnrollments,
{path: 'class', select: 'className classNumber'}
);