Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Georuimtelijke gegevens kunnen nu worden opgeslagen en opgevraagd met behulp van Azure DocumentDB. Deze uitbreiding biedt krachtige hulpprogramma's voor het beheren en analyseren van ruimtelijke gegevens, waardoor een breed scala aan toepassingen mogelijk is, zoals realtime locatietracking, routeoptimalisatie en ruimtelijke analyses.
Hier volgt een kort overzicht van de georuimtelijke opdrachten en operators die nu worden ondersteund:
Georuimtelijke queryoperators
$geoIntersects
Selecteert documenten waarbij een opgegeven geometrie met de geometrie van de documenten wordt gekruist. Handig voor het vinden van documenten die een deel van de ruimte delen met een bepaalde geometrie.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$geoWithin
Hiermee selecteert u documenten met georuimtelijke gegevens die volledig binnen een opgegeven shape bestaan. Deze operator wordt gebruikt om documenten in een gedefinieerd gebied te vinden.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$box
Hiermee definieert u een rechthoekig gebied met twee coördinaatparen (linksonder en rechtsboven). Wordt gebruikt met de $geoWithin operator om documenten in deze rechthoek te vinden. Zoek bijvoorbeeld alle locaties in een rechthoekige regio op een kaart.
db.collection.find({
location: {
$geoWithin: {
$box: [[lowerLeftLong, lowerLeftLat], [upperRightLong, upperRightLat]]
}
}
})
$center
Definieert een cirkelvormig gebied met behulp van een middelpunt en een straal in radialen. Wordt gebruikt met de $geoWithin operator om documenten in deze cirkel te vinden.
db.collection.find({
location: {
$geoWithin: {
$center: [[longitude, latitude], radius]
}
}
})
$centerSphere
Vergelijkbaar met $center, maar definieert een bolvormig gebied met behulp van een middelpunt en een radius in radialen. Handig voor sferische geometrieberekeningen.
db.collection.find({
location: {
$geoWithin: {
$centerSphere: [[longitude, latitude], radius]
}
}
})
$geometry
Hiermee geeft u een GeoJSON-object om een geometrie te definiëren. Wordt gebruikt met georuimtelijke operators om query's uit te voeren op basis van complexe shapes.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [longitude, latitude]
}
}
}
})
$maxDistance
Hiermee geeft u de maximale afstand van een punt voor een georuimtelijke query. Wordt gebruikt met $near en $nearSphere operators. U kunt bijvoorbeeld alle locaties binnen 2 km van een bepaald punt vinden.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$minDistance
Hiermee geeft u de minimale afstand van een punt voor een georuimtelijke query. Wordt gebruikt met $near en $nearSphere operators.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$minDistance: distance
}
}
})
$polygon
Definieert een veelhoek met behulp van een matrix van coördinaatparen. Wordt gebruikt met de $geoWithin operator om documenten in deze veelhoek te vinden.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$near
Hiermee vindt u documenten die zich in de buurt van een opgegeven punt bevinden. Retourneert documenten gesorteerd op afstand van het punt. Zoek bijvoorbeeld de dichtstbijzijnde restaurants naar de locatie van een gebruiker.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$nearSphere
Vergelijkbaar met $near, maar voert berekeningen uit op een bolvormig oppervlak. Handig voor nauwkeurigere afstandsberekeningen op het aardoppervlak.
db.collection.find({
location: {
$nearSphere: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
Georuimtelijke aggregatiefase
$geoNear
Voert een georuimtelijke query uit om documenten te retourneren die zijn gesorteerd op afstand van een opgegeven punt. Kan aanvullende querycriteria bevatten en informatie over de retourafstand.
db.collection.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [longitude, latitude]
},
distanceField: "distance",
spherical: true
}
}
])
Overwegingen en niet-ondersteunde mogelijkheden
Query's uitvoeren met een geojson-veelhoek met één ring waarvan het gebied een enkel halfrond overschrijdt, wordt momenteel niet ondersteund. In dergelijke gevallen retourneert Azure DocumentDB het volgende foutbericht:
Error: Custom CRS for big polygon is not supported yet.Een samengestelde index met behulp van een normale index en georuimtelijke index is niet toegestaan. Voorbeeld:
db.collection.createIndex({a: "2d", b: 1}); Error: Compound 2d indexes are not supported yetVeelhoeken met gaten worden momenteel niet ondersteund voor gebruik met $geoWithin query's. Hoewel het invoegen van een veelhoek met gaten niet beperkt is, mislukt het uiteindelijk met het volgende foutbericht:
Error: $geoWithin currently doesn't support polygons with holesHet sleutelveld is altijd vereist in de $geoNear aggregatiefase. Als het sleutelveld ontbreekt, treedt de volgende fout op:
Error: $geoNear requires a 'key' option as a StringDe
$geoNear,$nearen$nearSpherefasen hebben geen strikte indexvereisten, dus deze query's mislukken niet als er een index ontbreekt.
Verwante inhoud
- Lees meer over de compatibiliteit van MongoDB Query Language (MQL) met MongoDB.
- Bekijk de opties voor het migreren van MongoDB naar Azure DocumentDB.