在这种情况下,不允许$ geoNear,$ near和$ nearSphere

时间:2018-11-03 16:19:21

标签: mongodb aggregation-framework

我正在编写一个聚合查询,尝试匹配特定区域的用户。我遵循了3.6版本文档(我的mongodb版本)

db.collection('users').aggregate([
      {$match: {
        location: {
          $geoNear: {
            near: {type: 'Point', coordinates: [lng, lat]},
            maxDistance: globalConf.maxDistance * 1000
          }
        }
      }})

如果我在find上下文中使用此匹配项,它将起作用。如何修改查询以使其在聚合上下文中工作?

我得到的错误是$geoNear, $near, and $nearSphere are not allowed in this context

1 个答案:

答案 0 :(得分:0)

$geoNear必须处于聚合管道阶段。而且我必须包含{spherical: true},因为我的location字段是2dsphere类型

因此,结果将是

 db.collection('users').aggregate([
    $geoNear: {
      includeLocs: "location",
      distanceField: "distance",
      near: {type: 'Point', coordinates: [lng, lat]},
      maxDistance: globalConf.maxDistance * 1000,
      spherical: true
    }
])