【问题标题】:Is there a way to populate with a projection in Mongoose?有没有办法在猫鼬中填充投影?
【发布时间】:2019-06-01 10:05:42
【问题描述】:

假设我有一个集合,其中包含一个引用来自另一个集合的文档的字段,如下所示:

ClassEnrollment

_id | student | class
---------------------

Class 集合中的类具有以下架构:

_id | className | teacher | building | time | days | classNumber | description
------------------------------------------------------------------------------

如果我想在服务器上填充一组 3000 个类,我可能会执行 ClassEnrollment.populate(listOfClassEnrollments, {path: 'class'}); 之类的操作

在我的情况下,我不想要大部分类字段,只是名称。如果我从包含所有字段的数据库中获取 3000 个类的列表,我最终会以网络延迟的形式对性能造成影响(这 3000 个类必须从托管数据库传输到服务器,这可能是 50 MB如果描述很长,则为原始数据)

有没有办法通过填充选项仅用名称填充班级注册列表(在幕后我想它会像投影一样工作,所以数据库只响应班级名称和 _id 而不是全部类信息)?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    您可以在populate 调用中使用select 选项来执行此操作:

    ClassEnrollment.populate(listOfClassEnrollments, {path: 'class', select: 'className'});
    

    要指定多个字段,请使用空格分隔的列表:

    ClassEnrollment.populate(
        listOfClassEnrollments,
        {path: 'class', select: 'className classNumber'}
    );
    

    【讨论】:

    • 这正是我想要的。谢谢!
    • 如果要选择多个,请使用空格分隔:'className teacher building'
    • 多个字段呢?
    猜你喜欢
    • 2020-11-19
    • 2020-07-25
    • 1970-01-01
    • 2014-11-01
    • 2021-10-07
    • 2015-07-13
    • 2016-10-10
    • 2022-11-22
    相关资源
    最近更新 更多