问题描述
我有一个包含 2 个集合的基础,每个集合约 45k 行,我正在尝试在以下查询中聚合数据:
{
$geoNear: {
near: {
type: "Point",coordinates: [location.longitude,location.latitude]
},distanceField: "location.distance",spherical: true
}
},{
$lookup: {
from: "departments",as: "departments",let: { parentDepartmentId: "$parentDepartmentId" },pipeline: [
{
$match: {
$expr: { $eq: ["$$parentDepartmentId","$_id"] },status: "ACTIVE"
}
}
]
}
},{
$match: {
departments: { $ne: [] }
}
},{ $skip: 0 },{ $limit: 10 }
在响应中,我得到了按距离排序的数据,它可以工作,但查询执行时间长达 40 秒。移除 departments: { $ne: [] }
阶段后,即使使用 geoNear,查询也会在 ~0.3 秒内执行,反之亦然:如果我移除 $geoNear
阶段并保留 departments: { $ne: [] }
,查询的运行速度相同.但是 geoNear + match 的组合执行速度非常慢。
有人知道我做错了什么吗?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)