mirror of https://gitee.com/bigwinds/arangodb
65 lines
2.2 KiB
Markdown
65 lines
2.2 KiB
Markdown
|
|
@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
|