筛选$ lookup的结果

时间:2019-04-17 20:00:53

标签: javascript node.js mongodb mongoose

我有一个正在运行的查询。但是,我需要使用$ match或类似内容过滤结果。本地集合具有一个名为“ clinic_id”的字段。 from集合具有一个名为branchId的字段。我需要确保这些字段被过滤。基本上只返回branchId为“ 1”且climate_id为“ 1”的结果。

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

我尝试使用$ match和$ unwind,但是一直出现错误。

1 个答案:

答案 0 :(得分:2)

查找后,您可以使用$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"
            }
}