首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >$lookup :如果引用字段不为空,则返回模型

$lookup :如果引用字段不为空,则返回模型
EN

Stack Overflow用户
提问于 2021-08-20 14:43:25
回答 1查看 28关注 0票数 1

我有一个有ref :"University"College模型。在创建学院时,每个学院都有一所大学。

因此,我正在尝试获取大学的uuid与请求查询匹配的所有学院。

因此,我尝试了以下方法:

代码语言:javascript
运行
复制
  const myAggregate = College.aggregate([
    {
      $match: {
        language: req.query.language,
        display_language: req.query.display_language
      }
    },
    {
      $lookup: {
        from: 'unis', // UNIVERSITY COLLECTION
        pipeline: [
          {
            $match: {
              $expr: {
                $eq: ["$uuid", req.query.id]
              }
            }
          }
        ],
        as: 'univ',
      },
    },
    {
      $sort: { createdAt: -1 },
    },
  ])

因此,当提供查询时,上面的代码不等于大学UUID,它将获取所有学院,但每个学院的univ数组为空。

uuid等于查询id而不显示univ的空数组时,是否可以只显示学院?

EN

回答 1

Stack Overflow用户

发布于 2021-08-21 05:58:34

你可以做解开来移除空的。

单据参照:https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/

代码语言:javascript
运行
复制
 const myAggregate = College.aggregate([
    {
      $match: {
        language: req.query.language,
        display_language: req.query.display_language
      }
    },
    {
      $lookup: {
        from: 'unis', // UNIVERSITY COLLECTION
        pipeline: [
          {
            $match: {
              $expr: {
                $eq: ["$uuid", req.query.id]
              }
            }
          }
        ],
        as: 'univ',
      },
    },
   {"$unwind":{
 path: '$univ',
preserveNullAndEmptyArrays: false}},
    {
      $sort: { createdAt: -1 },
    },
  ])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68864052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档