$geometry - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

$geometry

L'$geometryopérateur dans Amazon DocumentDB est utilisé pour spécifier un objet de géométrie GeoJSON dans le cadre d'une requête géospatiale. Cet opérateur est utilisé conjointement avec d'autres opérateurs de requêtes géospatiales tels que $geoWithin et $geoIntersects pour effectuer des requêtes spatiales sur vos données.

Dans Amazon DocumentDB, l'$geometryopérateur prend en charge les types de géométrie GeoJSON suivants :

  • Point

  • LineString

  • Polygone

  • MultiPoint

  • MultiLineString

  • MultiPolygon

  • GeometryCollection

Paramètres

  • type: le type de l'objet de géométrie GeoJSON, par exemple, PointPolygon, etc.

  • coordinates: tableau de coordonnées représentant la géométrie. La structure du tableau de coordonnées dépend du type de géométrie.

Exemple (MongoDB Shell)

L'exemple suivant montre comment utiliser l'$geometryopérateur pour exécuter une $geoIntersects requête dans Amazon DocumentDB.

Création d'exemples de documents

db.locations.insertMany([ { "_id": 1, "name": "Location 1", "location": { "type": "Point", "coordinates": [-73.983253, 40.753941] } }, { "_id": 2, "name": "Location 2", "location": { "type": "Polygon", "coordinates": [[ [-73.998427, 40.730309], [-73.954348, 40.730309], [-73.954348, 40.780816], [-73.998427, 40.780816], [-73.998427, 40.730309] ]] } } ]);

Exemple de requête

db.locations.find({ "location": { "$geoIntersects": { "$geometry": { "type": "Polygon", "coordinates": [[ [-73.998, 40.730], [-73.954, 40.730], [-73.954, 40.781], [-73.998, 40.781], [-73.998, 40.730] ]] } } } })

Sortie

[ { "_id": 2, "name": "Location 2", "location": { "type": "Polygon", "coordinates": [ [ [-73.998427, 40.730309], [-73.954348, 40.730309], [-73.954348, 40.780816], [-73.998427, 40.780816], [-73.998427, 40.730309] ] ] } } ]

Exemples de code

Pour afficher un exemple de code relatif à l'utilisation de la $geometry commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const collection = db.collection('locations'); const query = { "location": { "$geoIntersects": { "$geometry": { "type": "Polygon", "coordinates": [[ [-73.998, 40.730], [-73.954, 40.730], [-73.954, 40.781], [-73.998, 40.781], [-73.998, 40.730] ]] } } } }; const result = await collection.find(query).toArray(); console.log(result); await client.close(); } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] collection = db['locations'] query = { "location": { "$geoIntersects": { "$geometry": { "type": "Polygon", "coordinates": [[ [-73.998, 40.730], [-73.954, 40.730], [-73.954, 40.781], [-73.998, 40.781], [-73.998, 40.730] ]] } } } } result = list(collection.find(query)) print(result) client.close() example()