Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A térinformatikai adatok mostantól tárolhatók és lekérdezhetők az Azure DocumentDB használatával. Ez a fejlesztés hatékony eszközöket biztosít a térbeli adatok kezeléséhez és elemzéséhez, így számos alkalmazás, például a valós idejű helykövetés, az útvonaloptimalizálás és a térbeli elemzések széles skáláját teszi lehetővé.
Íme egy gyors áttekintés a térinformatikai parancsokról és az operátorokról, amelyek most már támogatottak:
Térinformatikai lekérdezési operátorok
$geoIntersects
Olyan dokumentumokat jelöl ki, ahol egy adott geometria metszi a dokumentumok geometriájával. Olyan dokumentumok megkereséséhez hasznos, amelyek a tér bármely részét egy adott geometriával osztják meg.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$geoWithin
Olyan térinformatikai adatokat tartalmazó dokumentumokat jelöl ki, amelyek teljes egészében egy adott alakzaton belül léteznek. Ez az operátor egy meghatározott területen belüli dokumentumok keresésére szolgál.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$box
Négyszögletes területet határoz meg két koordináta-pár használatával (bal alsó és jobb felső sarokban). Az operátorral a $geoWithin téglalapon belüli dokumentumok megkereséséhez használható. Egy térképen például egy négyszögletes régióban található összes hely megkeresése.
db.collection.find({
location: {
$geoWithin: {
$box: [[lowerLeftLong, lowerLeftLat], [upperRightLong, upperRightLat]]
}
}
})
$center
Egy körkörös területet határoz meg egy középpont és egy sugár radián használatával. Az operátorral a $geoWithin körön belüli dokumentumok megkeresésére szolgál.
db.collection.find({
location: {
$geoWithin: {
$center: [[longitude, latitude], radius]
}
}
})
$centerSphere
Hasonló, $centerde egy gömb alakú területet határoz meg középpont és sugár alapján radiánban. Gömbgeometriai számításokhoz hasznos.
db.collection.find({
location: {
$geoWithin: {
$centerSphere: [[longitude, latitude], radius]
}
}
})
$geometry
GeoJSON-objektumot ad meg a geometria definiálásához. A térinformatikai operátorokkal összetett alakzatokon alapuló lekérdezések végrehajtására szolgál.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [longitude, latitude]
}
}
}
})
$maxDistance
Meghatározza a térinformatikai lekérdezések pontjától való maximális távolságot. Használva és $nearSphere operátorokkal $near együtt. Például az összes hely megkeresése egy adott ponttól 2 km-re.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$minDistance
A térinformatikai lekérdezés egy pontjától való minimális távolságot adja meg. Használva és $nearSphere operátorokkal $near együtt.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$minDistance: distance
}
}
})
$polygon
Koordinátapárok tömbjének használatával definiál sokszöget. Az operátorral a $geoWithin sokszögben lévő dokumentumok megkeresésére szolgál.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$near
Megkeresi a megadott ponthoz közeli dokumentumokat. A ponttól való távolság szerint rendezett dokumentumokat adja vissza. Például keresse meg a legközelebbi éttermeket a felhasználó helyére.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$nearSphere
$nearEhhez hasonló, de gömbfelületen végez számításokat. Hasznos a földfelszín pontosabb távolságszámításához.
db.collection.find({
location: {
$nearSphere: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
Térinformatikai összesítési szakasz
$geoNear
Térinformatikai lekérdezést hajt végre a dokumentumok megadott ponttól való távolság szerinti rendezéséhez. Tartalmazhat további lekérdezési feltételeket és a távolságra vonatkozó információkat.
db.collection.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [longitude, latitude]
},
distanceField: "distance",
spherical: true
}
}
])
Szempontok és nem támogatott képességek
Jelenleg nem támogatott egy gyűrűs GeoJSON-poligonnal történő lekérdezés, amelynek területe meghaladja az egyetlen félgömböt. Ilyen esetekben az Azure DocumentDB a következő hibaüzenetet adja vissza:
Error: Custom CRS for big polygon is not supported yet.Normál indexet és térinformatikai indexet használó összetett index nem engedélyezett. Például:
db.collection.createIndex({a: "2d", b: 1}); Error: Compound 2d indexes are not supported yetA lyukas sokszögek jelenleg nem támogatottak $geoWithin lekérdezésekhez. Bár a lyukakkal rendelkező sokszög beszúrása nincs korlátozva, végül a következő hibaüzenettel meghiúsul:
Error: $geoWithin currently doesn't support polygons with holesA kulcsmezőre mindig szükség van az $geoNear összesítési szakaszban. Ha a kulcsmező hiányzik, a következő hiba történik:
Error: $geoNear requires a 'key' option as a StringA
$geoNear,$nearés$nearSpherea fázisok nem rendelkeznek szigorú indexkövetelményekkel, ezért ezek a lekérdezések nem hiúsulnak meg, ha hiányzik egy index.
Kapcsolódó tartalom
- További információ a MongoDB-lekérdezési nyelv (MQL) és a MongoDB kompatibilitásáról.
- Tekintse át a MongoDB-ből az Azure DocumentDB-be való migrálás lehetőségeit.