Docs Menu
Docs Home
/ / /
Java Reactive Streams 드라이버
/

지리 공간적 Atlas Search

이 페이지의 내용

  • 전제 조건
  • MongoDB 배포에 연결하기
  • 2dsphere 인덱스 만들기
  • GeoJSON 점 근처 위치 쿼리

지리 공간적 쿼리를 지원 하기 위해 MongoDB 는 지리 공간적 인덱스와 지리 공간적 쿼리 연산자를 제공합니다.

지리 공간적 쿼리 수행에 학습 보려면 서버 매뉴얼에서 지리 공간적 쿼리를 참조하세요.

이 가이드의 코드 예제를 실행하려면 다음 구성 요소를 설정해야 합니다.

  • test.restaurants 문서 restaurants.json 자산 에 있는 파일의 문서로 채워진 컬렉션입니다.Github

  • 다음 가져오기 문:

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoCollection;
import com.mongodb.reactivestreams.client.MongoDatabase;
import com.mongodb.client.model.geojson.*;
import com.mongodb.client.model.Indexes;
import com.mongodb.client.model.Filters;
import org.bson.Document;

중요

이 가이드 에서는 퀵 스타트 프라이머에 설명된 Subscriber 구현을 사용합니다.

먼저 MongoDB deployment에 연결한 다음 MongoDatabaseMongoCollection 인스턴스를 선언하고 정의합니다.

다음 코드는 포트 27017localhost 에서 실행되는 독립형 MongoDB 배포서버에 연결합니다. 그런 다음 test 데이터베이스를 참조하는 database 변수와 restaurants 컬렉션을 참조하는 collection 변수를 정의합니다.

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");

MongoDB deployment에 연결하는 방법에 대해 자세히 알아보려면 MongoDB에 연결 튜토리얼을 참조하세요.

2dsphere 인덱스를 생성하려면 Indexes.geo2dsphere() 헬퍼를 사용하여 2dsphere 인덱스에 대한 사양을 생성합니다. 인덱스를 생성하려면 MongoCollection.createIndex() 메서드에 사양을 전달합니다.

다음 예에서는 restaurants 컬렉션의 "contact.location" 필드에 2dsphere 인덱스를 생성합니다.

MongoCollection<Document> collection = database.getCollection("restaurants");
collection.createIndex(Indexes.geo2dsphere("contact.location"))
.subscribe(new PrintSubscriber<String>());

MongoDB 는 다양한 지리 공간적 쿼리 연산자를 제공합니다. 지리 공간적 쿼리 필터를 쉽게 만들 수 있도록 운전자 는 Filters 클래스와 com.mongodb.client.model.geojson 패키지 제공합니다.

다음 예에서는 지정된 GeoJSON Point 인스턴스에서 최소 1000 미터에서 최대 5000 미터 떨어진 문서를 가장 가까운 것부터 가장 먼 것 순으로 정렬하여 반환합니다.

Point refPoint = new Point(new Position(-73.9667, 40.78));
collection.find(Filters.near("contact.location", refPoint, 5000.0, 1000.0))
.subscribe(new PrintDocumentSubscriber());

돌아가기

텍스트 검색