我有一个有ref :"University"的College模型。在创建学院时,每个学院都有一所大学。
因此,我正在尝试获取大学的uuid与请求查询匹配的所有学院。
因此,我尝试了以下方法:
  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的空数组时,是否可以只显示学院?
发布于 2021-08-21 05:58:34
你可以做解开来移除空的。
单据参照:https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/
 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 },
    },
  ])https://stackoverflow.com/questions/68864052
复制相似问题