1
0
Fork 0
arangodb/Documentation/DocuBlocks/collectionGeo.md

2.2 KiB

@startDocuBlock collectionGeo @brief constructs a geo index selection collection.geo(location-attribute)

Looks up a geo index defined on attribute location_attribute.

Returns a geo index object if an index was found. The near or within operators can then be used to execute a geo-spatial query on this particular index.

This is useful for collections with multiple defined geo indexes.

collection.geo(location_attribute, true)

Looks up a geo index on a compound attribute location_attribute.

Returns a geo index object if an index was found. The near or within operators can then be used to execute a geo-spatial query on this particular index.

collection.geo(latitude_attribute, longitude_attribute)

Looks up a geo index defined on the two attributes latitude_attribute and longitude-attribute.

Returns a geo index object if an index was found. The near or within operators can then be used to execute a geo-spatial query on this particular index.

Note: this method is not yet supported by the RocksDB storage engine.

Note: the geo simple query helper function is deprecated as of ArangoDB 2.6. The function may be removed in future versions of ArangoDB. The preferred way for running geo queries is to use their AQL equivalents.

@EXAMPLES

Assume you have a location stored as list in the attribute home and a destination stored in the attribute work. Then you can use the geo operator to select which geo-spatial attributes (and thus which index) to use in a near query.

@EXAMPLE_ARANGOSH_OUTPUT{geoIndexSimpleQuery} ~db._create("complex") |for (i = -90; i <= 90; i += 10) { | for (j = -180; j <= 180; j += 10) { | db.complex.save({ name : "Name/" + i + "/" + j, | home : [ i, j ], | work : [ -i, -j ] }); | } |}

db.complex.near(0, 170).limit(5); // xpError(ERROR_QUERY_GEO_INDEX_MISSING) db.complex.ensureIndex({ type: "geo", fields: [ "home" ] }); db.complex.near(0, 170).limit(5).toArray(); db.complex.geo("work").near(0, 170).limit(5); // xpError(ERROR_QUERY_GEO_INDEX_MISSING) db.complex.ensureIndex({ type: "geo", fields: [ "work" ] }); db.complex.geo("work").near(0, 170).limit(5).toArray(); ~ db._drop("complex"); @END_EXAMPLE_ARANGOSH_OUTPUT

@endDocuBlock