javascript - 过滤 $lookup 的结果
问题描述
我有一个正在工作的查找。但是,我需要使用 $match 或类似的东西过滤结果。本地集合有一个名为“clinic_id”的字段。from 集合有一个名为 branchId 的字段。我需要确保过滤这些字段。基本上只有 branchId 为“1”和 Clinic_id 为“1”的结果。
{
$lookup:
{
from: "chatrooms",
localField: "userId",
foreignField: "user.id",
as: "merged"
}
}
我尝试使用 $match 和 $unwind 但不断收到错误。
解决方案
查找后,您可以使用$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"
}
}
推荐阅读
- c# - MVC 项目的控制器中使用的数据库上下文
- javascript - 兑现承诺
- javascript - 将局部变量用于另一个函数
- jquery - 重新加载或刷新页面后保持复选框选中
- python-3.x - 在 Python 中将浮点时间转换为日期时间或时间戳
- javascript - 单击按钮时水平“插入”图像
- firebase - 以“is_”开头的 Firebase 集合文档键名从键名中删除了“is”
- python-3.x - 打印相关性大于 80% 的列
- php - 如何从 CakePHP AuthComponent 返回自定义错误?
- angular - Angular9 - @Input 装饰器问题