具有附加位置参数的mongo地理空间查询

时间:2012-10-24 21:34:47

标签: mongodb geospatial

鉴于以下文件:

{
  _id: 'foo'
  locations: [
    {
      lat: 1,
      lon: 2,
      type: 'home'
    },
    {
      lat: 10,
      lon: 20,
      type: 'office'
    }
  ]
}

{
  _id: 'bar'
  locations: [
    {
      lat: 10,
      lon: 20,
      type: 'home'
    },
    {
      lat: 1,
      lon: 2,
      type: 'office'
    }
  ]
}

是否可以在具有特定类型的位置附近找到所有文档?

例如,查询: db.objects.find({locations: {$near: {lat: 1, lon: 2}, $maxDistance: 1}, 'locations.type': 'home'})

返回foo和bar,因为它们都有一个类型为'home'的位置和一个靠近[1,2]的位置

我想让查询做的就是找到foo,因为它的家位置就在附近[1,2]

1 个答案:

答案 0 :(得分:0)

您可以考虑更改架构。而不是具有位置数组的单个文档,而是考虑多个文档,每个文档表示具有类型名称的单个位置。

您需要在此处执行的查询类型需要$ elemMatch以保证在同一数组元素上满足您的两个条件 - 为此我们使用elemMatch。不幸的是,它不适用于地理空间查询 - 至少目前无法构建它。有一个出色的Jira ticket可以让它发挥作用。