Geospatial Queries
You can execute some special queries when using geospatial indexes like checking for documents within a rectangle or circle.
Mapping
First, setup some documents like the following:
1 <?php
#[Document]
#[Index(keys: ['coordinates' => '2d'])]
class City
{
#[Id]
public string $id;
#[Field(type: 'string')]
public string $name;
#[EmbedOne(targetDocument: Coordinates::class)]
public ?Coordinates $coordinates;
}
#[EmbeddedDocument]
class Coordinates
{
#[Field(type: 'float')]
public float $x;
#[Field(type: 'float')]
public float $y;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Near Query
Now you can execute queries against these documents like the
following. Check for the 10 nearest cities to a given longitude
and latitude with the near($longitude, $latitude)
method: