Geolocation 在ArangoDB中定义地理索引

Geolocation 在ArangoDB中定义地理索引,geolocation,location,arangodb,aql,Geolocation,Location,Arangodb,Aql,我有一个如下的数据结构。如何为该结构定义地理索引 { "currentGeoLocation": { "latitude": -10, "longitude": 1 } } 我试过这些命令: 一,- 二,- 但我认为没有一个是正确的。因为在搜索最近的项目后,我得到了[]。 有什么问题吗?您的第二个索引创建是正确的 人们必须知道,纬度和经度实际上并不是公里单位。将[-10,1]输入(这也是关于计算细节的一个很好的读物)告诉您它距离[0,0]1117公里。由于ArangoD

我有一个如下的数据结构。如何为该结构定义地理索引

{
  "currentGeoLocation": {
    "latitude": -10,
    "longitude": 1
  }
}
我试过这些命令: 一,-

二,-

但我认为没有一个是正确的。因为在搜索最近的项目后,我得到了[]。
有什么问题吗?

您的第二个索引创建是正确的

人们必须知道,纬度和经度实际上并不是公里单位。将
[-10,1]
输入(这也是关于计算细节的一个很好的读物)告诉您它距离
[0,0]
1117公里。由于ArangoDB中半径的单位是
m
,因此数字会变大

在实际地点搜索肯定会找到您的物品:

db._query('FOR item IN WITHIN(test, -10, 1, 1) RETURN item').toArray()
但是,从
[0,0]
搜索需要更大的半径:

db._query('FOR item IN WITHIN(test, 0, 0, 1200000) RETURN item').toArray()
[ 
  { 
    "_key" : "840", 
    "_id" : "test/840", 
    "_rev" : "840", 
    "currentGeoLocation" : { 
      "latitude" : -10, 
      "longitude" : 1 
    } 
  } 
]

您的第二个索引创建是正确的

人们必须知道,纬度和经度实际上并不是公里单位。将
[-10,1]
输入(这也是关于计算细节的一个很好的读物)告诉您它距离
[0,0]
1117公里。由于ArangoDB中半径的单位是
m
,因此数字会变大

在实际地点搜索肯定会找到您的物品:

db._query('FOR item IN WITHIN(test, -10, 1, 1) RETURN item').toArray()
但是,从
[0,0]
搜索需要更大的半径:

db._query('FOR item IN WITHIN(test, 0, 0, 1200000) RETURN item').toArray()
[ 
  { 
    "_key" : "840", 
    "_id" : "test/840", 
    "_rev" : "840", 
    "currentGeoLocation" : { 
      "latitude" : -10, 
      "longitude" : 1 
    } 
  } 
]

根据前面的回答,您使用的是arangosh接口还是arangodb js

我问,因为arangodb js接口不同。在本例中,您将看到如下内容:

db.collection('testnodes').createGeoIndex(['currentGeoLocation.latitude', 'currentGeoLocation.longitude'])

此外,arangodb还提供了许多非常有用的地理定位功能(近、内等),这些功能具有自动计算距离的辅助功能。

根据前面的答案,您使用的是arangosh界面还是arangodb js

我问,因为arangodb js接口不同。在本例中,您将看到如下内容:

db.collection('testnodes').createGeoIndex(['currentGeoLocation.latitude', 'currentGeoLocation.longitude'])

此外,arangodb还提供了许多非常有用的地理定位功能(近、内等),这些功能具有自动计算距离的辅助功能。

答案对您有用吗?如果是,您能将其中最好的标记为“已接受”吗?如果没有,缺少什么?你想分享你的实际解决方案吗?答案对你有用吗?如果是,您能将其中最好的标记为“已接受”吗?如果没有,缺少什么?您想分享您的实际解决方案吗?遇到相同的问题,如果坐标像此问题中那样嵌套,则查询不起作用。但是,如果我们在数据未嵌套的集合上定义地理索引,则查询可以工作。遇到相同的问题时,如果坐标像此问题中那样嵌套,则查询无法工作。但是,如果我们在数据未嵌套的集合上定义地理索引,查询将起作用。