Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Geoprostorová data se teď dají ukládat a dotazovat pomocí Azure DocumentDB. Toto vylepšení poskytuje výkonné nástroje pro správu a analýzu prostorových dat, které umožňují širokou škálu aplikací, jako je sledování polohy v reálném čase, optimalizace tras a prostorová analýza.
Tady je rychlý přehled podporovaných geoprostorových příkazů a operátorů:
Geoprostorové operátory dotazů
$geoIntersects
Vybere dokumenty, ve kterých se zadaná geometrie protíná s geometrií dokumentů. Užitečné při hledání dokumentů, které sdílejí jakoukoli část prostoru s danou geometrií.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$geoWithin
Vybere dokumenty s geoprostorovými daty, které jsou zcela v zadaném obrazci. Tento operátor slouží k vyhledání dokumentů v definované oblasti.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$box
Definuje obdélníkovou oblast pomocí dvou párů souřadnic (levý dolní a pravý horní roh). Používá se s operátorem $geoWithin k vyhledání dokumentů v tomto obdélníku. Například vyhledání všech umístění v obdélníkové oblasti na mapě.
db.collection.find({
location: {
$geoWithin: {
$box: [[lowerLeftLong, lowerLeftLat], [upperRightLong, upperRightLat]]
}
}
})
$center
Definuje kruhovou oblast pomocí středového bodu a poloměru v radiánech. Používá se s operátorem $geoWithin k vyhledání dokumentů v tomto kruhu.
db.collection.find({
location: {
$geoWithin: {
$center: [[longitude, latitude], radius]
}
}
})
$centerSphere
$centerPodobá se tomu, ale definuje kulovou oblast pomocí středového bodu a poloměru v radiánech. Užitečné pro výpočty s kulovou geometrií.
db.collection.find({
location: {
$geoWithin: {
$centerSphere: [[longitude, latitude], radius]
}
}
})
$geometry
Určuje objekt GeoJSON definující geometrii. Používá se s geoprostorovými operátory k provádění dotazů na základě složitých obrazců.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [longitude, latitude]
}
}
}
})
$maxDistance
Určuje maximální vzdálenost od bodu geoprostorového dotazu. Používá se s operátory $near a $nearSphere operátory. Můžete například najít všechna místa v okruhu 2 km od daného bodu.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$minDistance
Určuje minimální vzdálenost od bodu geoprostorového dotazu. Používá se s operátory $near a $nearSphere operátory.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$minDistance: distance
}
}
})
$polygon
Definuje mnohoúhelník pomocí pole párů souřadnic. Používá se s operátorem $geoWithin k vyhledání dokumentů v rámci tohoto mnohoúhelníku.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$near
Vyhledá dokumenty, které jsou blízko zadaného bodu. Vrátí dokumenty seřazené podle vzdálenosti od bodu. Například vyhledání nejbližších restaurací k umístění uživatele.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$nearSphere
$nearPodobá se tomu, ale provádí výpočty na kulové ploše. Užitečné pro přesnější výpočty vzdálenosti na povrchu Země.
db.collection.find({
location: {
$nearSphere: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
Geoprostorová fáze agregace
$geoNear
Provede geoprostorový dotaz, který vrátí dokumenty seřazené podle vzdálenosti od zadaného bodu. Může obsahovat další kritéria dotazu a informace o návratu vzdálenosti.
db.collection.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [longitude, latitude]
},
distanceField: "distance",
spherical: true
}
}
])
Důležité informace a nepodporované funkce
V současné době se dotazování pomocí polygonu GeoJSON s jedním kruhem, jehož oblast překračuje jednu polokouli, nepodporuje. V takových případech azure DocumentDB vrátí následující chybovou zprávu:
Error: Custom CRS for big polygon is not supported yet.Složený index používající běžný index a geoprostorový index není povolený. Například:
db.collection.createIndex({a: "2d", b: 1}); Error: Compound 2d indexes are not supported yetMnohoúhelníky s otvory se v současné době nepodporují pro použití s dotazy $geoWithin. I když vložení mnohoúhelníku s otvory není omezeno, nakonec selže s následující chybovou zprávou:
Error: $geoWithin currently doesn't support polygons with holesKlíčové pole je vždy vyžadováno ve fázi $geoNear agregace. Pokud pole klíče chybí, dojde k následující chybě:
Error: $geoNear requires a 'key' option as a StringFáze
$geoNeara$nearSphere,$nearkteré nemají přísné požadavky na index, takže tyto dotazy nebudou neúspěšné, pokud chybí index.
Související obsah
- Přečtěte si další informace o kompatibilitě dotazovacího jazyka MongoDB (MQL) s MongoDB.
- Projděte si možnosti migrace z MongoDB do Azure DocumentDB.