【问题标题】:Filter results of a $lookup过滤 $lookup 的结果
【发布时间】:2019-04-18 04:16:36
【问题描述】:

我有一个正在工作的查找。但是,我需要使用 $match 或类似的东西过滤结果。本地集合有一个名为“clinic_id”的字段。 from 集合有一个名为 branchId 的字段。我需要确保过滤这些字段。基本上只有 branchId 为“1”且 Clinic_id 为“1”的结果。

 {
 $lookup:
 {
   from: "chatrooms",
   localField: "userId",
   foreignField: "user.id",
   as: "merged"
 }
}

我尝试使用 $match 和 $unwind 但不断出错。

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    查找后,您可以使用$match 在同一查询中应用条件

    {
        $lookup:
            {
               from: "chatrooms",
               localField: "userId",
               foreignField: "user.id",
               as: "merged"
            }
    },{
        $match: {
                  "merged.branchId" : "1",
                  "clinic_id" : "1"
                }
    }
    

    您也可以先检查本地集合clinic_id,然后查找后的branchId:(这样会更快,因为查找时间会更少)

    {
        $match: {
                  "clinic_id" : "1"
                }
    },
    {
        $lookup:
            {
               from: "chatrooms",
               localField: "userId",
               foreignField: "user.id",
               as: "merged"
            }
    },
    {
        $match: {
                  "merged.branchId" : "1"
                }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-15
      • 2016-07-27
      • 2018-07-29
      • 1970-01-01
      • 2012-07-08
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多