Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les données géospatiales peuvent désormais être stockées et interrogées à l’aide d’Azure DocumentDB. Cette amélioration fournit des outils puissants pour gérer et analyser des données spatiales, ce qui permet à un large éventail d’applications telles que le suivi de l’emplacement en temps réel, l’optimisation des itinéraires et l’analytique spatiale.
Voici une vue d’ensemble rapide des commandes et opérateurs géospatiaux désormais pris en charge :
Opérateurs de requête géospatiales
$geoIntersects
Sélectionne les documents dans lesquels une géométrie spécifiée se croise avec la géométrie des documents. Utile pour rechercher des documents qui partagent une partie de l’espace avec une géométrie donnée.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$geoWithin
Sélectionne des documents avec des données géospatiales qui existent entièrement dans une forme spécifiée. Cet opérateur est utilisé pour rechercher des documents dans une zone définie.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$box
Définit une zone rectangulaire à l’aide de deux paires de coordonnées (coin inférieur gauche et supérieur droit). Utilisé avec l’opérateur $geoWithin pour rechercher des documents dans ce rectangle. Par exemple, recherchez tous les emplacements dans une région rectangulaire sur une carte.
db.collection.find({
location: {
$geoWithin: {
$box: [[lowerLeftLong, lowerLeftLat], [upperRightLong, upperRightLat]]
}
}
})
$center
Définit une zone circulaire à l’aide d’un point central et d’un rayon en radians. Utilisé avec l’opérateur $geoWithin pour rechercher des documents dans ce cercle.
db.collection.find({
location: {
$geoWithin: {
$center: [[longitude, latitude], radius]
}
}
})
$centerSphere
Similaire à , mais définit une zone sphérique à $centerl’aide d’un point central et d’un rayon en radians. Utile pour les calculs de géométrie sphérique.
db.collection.find({
location: {
$geoWithin: {
$centerSphere: [[longitude, latitude], radius]
}
}
})
$geometry
Spécifie un objet GeoJSON pour définir une géométrie. Utilisé avec des opérateurs géospatiaux pour effectuer des requêtes basées sur des formes complexes.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [longitude, latitude]
}
}
}
})
$maxDistance
Spécifie la distance maximale d’un point pour une requête géospatiale. Utilisé avec et $nearSphere opérateurs$near. Par exemple, recherchez tous les emplacements situés à moins de 2 km d’un point donné.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$minDistance
Spécifie la distance minimale d’un point pour une requête géospatiale. Utilisé avec et $nearSphere opérateurs$near.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$minDistance: distance
}
}
})
$polygon
Définit un polygone à l’aide d’un tableau de paires de coordonnées. Utilisé avec l’opérateur $geoWithin pour rechercher des documents dans ce polygone.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$near
Recherche des documents proches d’un point spécifié. Retourne des documents triés par distance à partir du point. Par exemple, recherchez les restaurants les plus proches à l’emplacement d’un utilisateur.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$nearSphere
Similaire à $near, mais effectue des calculs sur une surface sphérique. Utile pour des calculs de distance plus précis sur la surface de la Terre.
db.collection.find({
location: {
$nearSphere: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
Étape d’agrégation géospatiale
$geoNear
Effectue une requête géospatiale pour retourner des documents triés par distance à partir d’un point spécifié. Peut inclure des critères de requête supplémentaires et des informations de distance de retour.
db.collection.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [longitude, latitude]
},
distanceField: "distance",
spherical: true
}
}
])
Considérations et fonctionnalités non prises en charge
Actuellement, l’interrogation avec un polygone GeoJSON à sonnerie unique dont la zone dépasse un seul hémisphère n’est pas prise en charge. Dans ce cas, Azure DocumentDB retourne le message d’erreur suivant :
Error: Custom CRS for big polygon is not supported yet.Un index composite utilisant un index normal et un index géospatial n’est pas autorisé. Par exemple:
db.collection.createIndex({a: "2d", b: 1}); Error: Compound 2d indexes are not supported yetLes polygones avec trous ne sont actuellement pas pris en charge pour une utilisation avec des requêtes $geoWithin. Bien que l’insertion d’un polygone avec des trous ne soit pas restreinte, elle échoue finalement avec le message d’erreur suivant :
Error: $geoWithin currently doesn't support polygons with holesLe champ clé est toujours requis dans l’étape d’agrégation $geoNear. Si le champ clé est manquant, l’erreur suivante se produit :
Error: $geoNear requires a 'key' option as a StringLes
$geoNearétapes et$nearSphereles$nearétapes n’ont pas de conditions d’index strictes. Ces requêtes ne échouent donc pas si un index est manquant.
Contenu connexe
- En savoir plus sur la compatibilité du langage de requête MongoDB (MQL) avec MongoDB.
- Passez en revue les options de migration de MongoDB vers Azure DocumentDB.