我有一个正在运行的查询。但是,我需要使用$ match或类似内容过滤结果。本地集合具有一个名为“ clinic_id”的字段。 from集合具有一个名为branchId的字段。我需要确保这些字段被过滤。基本上只返回branchId为“ 1”且climate_id为“ 1”的结果。
{
$lookup:
{
from: "chatrooms",
localField: "userId",
foreignField: "user.id",
as: "merged"
}
}
我尝试使用$ match和$ unwind,但是一直出现错误。
答案 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"
}
}