arangosh> db.geoSort.ensureIndex({ type: "geo", fields: [ "latitude", "longitude" ] }); { "constraint" : false, "fields" : [ "latitude", "longitude" ], "id" : "geoSort/33231", "ignoreNull" : true, "isNewlyCreated" : true, "sparse" : true, "type" : "geo2", "unique" : false, "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: 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 /* geo2 index scan */ 5 LimitNode 5 - LIMIT 0, 5 6 ReturnNode 5 - RETURN doc Indexes used: By Type Collection Unique Sparse Selectivity Fields Ranges 7 geo2 geoSort false true n/a [ `latitude`, `longitude` ] NEAR(doc, 0, 0) Optimization rules applied: Id RuleName 1 geo-index-optimizer 2 remove-unnecessary-calculations-2 arangosh> db._query(query); [ { "_key" : "34288", "_id" : "geoSort/34288", "_rev" : "_WpTBE2q--_", "name" : "Name/0/0", "latitude" : 0, "longitude" : 0 }, { "_key" : "34177", "_id" : "geoSort/34177", "_rev" : "_WpTBE2S--B", "name" : "Name/-10/0", "latitude" : -10, "longitude" : 0 }, { "_key" : "34399", "_id" : "geoSort/34399", "_rev" : "_WpTBE26--L", "name" : "Name/10/0", "latitude" : 10, "longitude" : 0 }, { "_key" : "34285", "_id" : "geoSort/34285", "_rev" : "_WpTBE2m--H", "name" : "Name/0/-10", "latitude" : 0, "longitude" : -10 }, { "_key" : "34291", "_id" : "geoSort/34291", "_rev" : "_WpTBE2q--B", "name" : "Name/0/10", "latitude" : 0, "longitude" : 10 } ] [object ArangoQueryCursor, count: 5, cached: false, hasMore: false]