$nearSphere - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

$nearSphere

Amazon DocumentDB의 $nearSphere 연산자는 지리 공간 지점에서 지정된 거리 내에 있는 문서를 찾는 데 사용됩니다. 이 연산자는 특정 위치의 특정 반경 내에서 모든 레스토랑을 찾는 등 지리 공간 쿼리에 특히 유용합니다.

파라미터

  • $geometry: 참조 지점을 나타내는 GeoJSON 객체입니다. typecoordinates 필드가 있는 Point 객체여야 합니다.

  • $minDistance: (선택 사항) 문서가 있어야 하는 참조 지점과의 최소 거리(미터)입니다.

  • $maxDistance: (선택 사항) 문서가 있어야 하는 참조 지점과의 최대 거리(미터)입니다.

예제(MongoDB 쉘)

이 예제에서는 워싱턴주 시애틀의 특정 위치에서 2킬로미터(2,000미터) 이내에 있는 모든 레스토랑을 찾습니다.

샘플 문서 생성

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] } } ]);

쿼리 예제

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

출력

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

코드 예제

$nearSphere 명령을 사용하기 위한 코드 예제를 보려면 사용하려는 언어의 탭을 선택합니다.

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()