使用街区和餐厅集合,我想汇总一个街区及其相应餐厅的查询。
我尝试将$ lookup与let和管道一起使用,像这样:
db.neighbourhoods.aggregate([
$lookup: {
from: 'restaurants',
let: { polygon: '$geometry' },
pipeline: [
{
$match: {
location: {
$geoWithin: {
$geometry: '$$polygon'
}
}
}
}
]
}
])
哪个产生unknown geo specifier: $geometry: "$$polygon"
。根据文档,为了在管道阶段使用let字段中定义的变量,必须使用$ expr运算符。但是,然后$ expr不能包含$ geoWithin查询,因为它不是表达式,并且$ geoWithin查询也不能包含$ expr运算符。
这完全有可能还是我缺少一些基本的东西吗?作为参考,我的最终目标是按照街区包含的餐馆数量对街区进行排序。
任何帮助将不胜感激。