$nearSphere - 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.

$nearSphere

L'$nearSphereopérateur d'Amazon DocumentDB est utilisé pour rechercher des documents situés à une distance spécifiée d'un point géospatial. Cet opérateur est particulièrement utile pour les requêtes géospatiales, telles que la recherche de tous les restaurants situés dans un certain rayon d'un lieu donné.

Paramètres

  • $geometry: objet GeoJSON qui représente le point de référence. Il doit s'agir d'un Point objet comportant type des coordinates champs et.

  • $minDistance: (facultatif) La distance minimale (en mètres) par rapport au point de référence que doivent se trouver les documents.

  • $maxDistance: (facultatif) Distance maximale (en mètres) par rapport au point de référence que doivent se trouver les documents.

Exemple (MongoDB Shell)

Dans cet exemple, nous trouverons tous les restaurants dans un rayon de 2 kilomètres (2000 mètres) d'un emplacement spécifique à Seattle, dans l'État de Washington.

Création d'exemples de documents

db.usarestaurants.insert([ { name: "Noodle House", location: { type: "Point", coordinates: [-122.3516, 47.6156] } }, { name: "Pike Place Grill", location: { type: "Point", coordinates: [-122.3403, 47.6101] } }, { name: "Seattle Coffee Co.", location: { type: "Point", coordinates: [-122.3339, 47.6062] } } ]);

Exemple de requête

db.usarestaurants.find({ location: { $nearSphere: { $geometry: { type: "Point", coordinates: [-122.3516, 47.6156] }, $minDistance: 1, $maxDistance: 2000 } } }, { name: 1 });

Sortie

{ "_id" : ObjectId("611f3da985009a81ad38e74b"), "name" : "Noodle House" } { "_id" : ObjectId("611f3da985009a81ad38e74c"), "name" : "Pike Place Grill" }

Exemples de code

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

Node.js
const { MongoClient } = require('mongodb'); async function findNearbyRestaurants() { 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 restaurants = db.collection('usarestaurants'); const result = await restaurants.find({ location: { $nearSphere: { $geometry: { type: "Point", coordinates: [-122.3516, 47.6156] }, $minDistance: 1, $maxDistance: 2000 } } }, { projection: { name: 1 } }).toArray(); console.log(result); client.close(); } findNearbyRestaurants();
Python
from pymongo import MongoClient def find_nearby_restaurants(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client.test restaurants = db.usarestaurants result = list(restaurants.find({ 'location': { '$nearSphere': { '$geometry': { 'type': 'Point', 'coordinates': [-122.3516, 47.6156] }, '$minDistance': 1, '$maxDistance': 2000 } } }, { 'name': 1 })) print(result) client.close() find_nearby_restaurants()