arangosh> db.geoSort.ensureIndex({ type: "geo", fields: [ "latitude", "longitude" ] });
{
"bestIndexedLevel" : 17,
"fields" : [
"latitude",
"longitude"
],
"geoJson" : false,
"id" : "geoSort/86143",
"isNewlyCreated" : true,
"maxNumCoverCells" : 8,
"name" : "idx_1646382083762814978",
"sparse" : true,
"type" : "geo",
"unique" : false,
"worstIndexedLevel" : 4,
"code" : 201
}
arangosh> for (i = -90; i <= 90; i += 10) {
........> for (j = -180; j <= 180; j += 10) {
........> db.geoSort.save({ name : "Name/" + i + "/" + j, latitude : i, longitude : j });
........> }
........> }
arangosh> var query = "FOR doc in geoSort SORT DISTANCE(doc.latitude, doc.longitude, 0, 0) LIMIT 5 RETURN doc"
arangosh> db._explain(query, {}, {colors: false});
Query String (86 chars, cacheable: true):
FOR doc in geoSort SORT DISTANCE(doc.latitude, doc.longitude, 0, 0) LIMIT 5 RETURN doc
Execution plan:
Id NodeType Est. Comment
1 SingletonNode 1 * ROOT
7 IndexNode 703 - FOR doc IN geoSort
5 LimitNode 5 - LIMIT 0, 5
6 ReturnNode 5 - RETURN doc
Indexes used:
By Name Type Collection Unique Sparse Selectivity Fields Ranges
7 idx_1646382083762814978 geo geoSort false true n/a [ `latitude`, `longitude` ] (GEO_DISTANCE([ 0, 0 ], [ doc.`longitude`, doc.`latitude` ]) < "unlimited")
Optimization rules applied:
Id RuleName
1 geo-index-optimizer
2 remove-unnecessary-calculations-2
arangosh> db._query(query);
[
{
"_key" : "86849",
"_id" : "geoSort/86849",
"_rev" : "_ZXF6fFi--G",
"name" : "Name/0/0",
"latitude" : 0,
"longitude" : 0
},
{
"_key" : "86923",
"_id" : "geoSort/86923",
"_rev" : "_ZXF6fGC--C",
"name" : "Name/10/0",
"latitude" : 10,
"longitude" : 0
},
{
"_key" : "86851",
"_id" : "geoSort/86851",
"_rev" : "_ZXF6fFm---",
"name" : "Name/0/10",
"latitude" : 0,
"longitude" : 10
},
{
"_key" : "86775",
"_id" : "geoSort/86775",
"_rev" : "_ZXF6fFG--A",
"name" : "Name/-10/0",
"latitude" : -10,
"longitude" : 0
},
{
"_key" : "86847",
"_id" : "geoSort/86847",
"_rev" : "_ZXF6fFi--E",
"name" : "Name/0/-10",
"latitude" : 0,
"longitude" : -10
}
]
[object ArangoQueryCursor, count: 5, cached: false, hasMore: false]