使用$ geoWithin汇总查询

时间:2019-01-08 23:32:24

标签: mongodb aggregation-framework geospatial

使用街区和餐厅集合,我想汇总一个街区及其相应餐厅的查询。

我尝试将$ 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运算符。

这完全有可能还是我缺少一些基本的东西吗?作为参考,我的最终目标是按照街区包含的餐馆数量对街区进行排序。

任何帮助将不胜感激。

0 个答案:

没有答案