Menu Docs
Página inicial do Docs
/ /

Query para localizações que cruzam um objeto GeoJSON

Você pode executar query de dados de localização que interseccionam com umobjeto GeoJSON do . Por exemplo, considere um aplicação que armazena coordenadas de estações de serviço. Você pode criar uma LineString GeoJSON que representa uma viagem de carro e executar uma query de estações de serviço que interseccionam com a rota da viagem de carro.

Para fazer uma query para dados de localização que interseccionam com um GeoJSON objeto, utilize o operador $geoIntersects :

db.<collection>.find( {
<location field> : {
$geoIntersects : {
$geometry : {
type : "<GeoJSON object type>",
coordinates : [ <coordinates> ]
}
}
}
} )
  • Quando você especificar coordenadas de longitude e latitude, liste primeiro a longitude e depois a latitude.

    • Os valores de longitude válidos estão entre -180 e 180, ambos inclusos.

    • Os valores de latitude válidos estão entre -90 e 90, ambos inclusos.

  • Uma localização se cruza com um objeto se ela compartilha pelo menos um ponto com o objeto especificado. Isso inclui objetos que têm uma borda compartilhada.

  • $geoIntersects não exige um índice geoespacial. No entanto, um índice geoespacial melhora o desempenho da query. Somente o índice geoespacial 2dsphere suporta $geoIntersects. Para mais informações, consulte Criar um índice 2dsphere.

Crie uma coleção gasStations que contenha estes documento:

db.gasStations.insertMany( [
{
loc: { type: "Point", coordinates: [ -106.31, 35.65 ] },
state: "New Mexico",
country: "United States",
name: "Horizons Gas Station"
},
{
loc: { type: "Point", coordinates: [ -122.62, 40.75 ] },
state: "California",
country: "United States",
name: "Car and Truck Rest Area"
},
{
loc: { type: "Point", coordinates: [ -72.71, 44.15 ] },
state: "Vermont",
country: "United States",
name: "Ready Gas and Snacks"
}
] )

A seguinte query $geoIntersects especifica um LineString contendo quatro pontos e retorna documentos que interseccionam com a linha:

db.gasStations.find( {
loc: {
$geoIntersects: {
$geometry: {
type: "LineString",
coordinates: [
[ -105.82, 33.87 ],
[ -106.01, 34.09 ],
[ -106.31, 35.65 ],
[ -107.39, 35.98 ]
]
}
}
}
} )

Saída:

[
{
_id: ObjectId("63f658d45e5eefbdfef81ca4"),
loc: { type: 'Point', coordinates: [ -106.31, 35.65 ] },
state: 'New Mexico',
country: 'United States',
name: 'Horizons Gas Station'
}
]

Voltar

Espheres

Nesta página