原因是在ArangoDB内部,经度和纬度被存储为字符串类型,而不是作为专门的地理空间数据类型。为了确保正确的工作,需要通过查询设置正确的查询参数。以下是一个示例:
//创建测试数据集合
db._create('places');
// 添加内含经度和纬度数据的示例文档
db.places.insert({
"name": "San Francisco",
"location": "geo:point(37.7749, -122.4194)"
});
// 运行查询,找到附近的地点
var nearby = db.places
.near("_id", 37.7749, -122.4194, 10, "distance")
.toArray();
// 输出查询结果
printjson(nearby);
在此示例中,我们使用了ArangoDB的near
函数来查询距离我们提供的经度和纬度不到10公里的地点,查询结果根据距离排序。请注意,查询的第二个和第三个参数是提供的经度和纬度值,而不是字符串。