>  기사  >  백엔드 개발  >  Mongodb로 지리공간 쿼리를 수행하는 방법

Mongodb로 지리공간 쿼리를 수행하는 방법

小云云
小云云원래의
2017-11-25 09:43:411925검색

C++ 언어로 작성된 분산 문서 저장 데이터베이스인 Mongodb는 웹 애플리케이션을 위한 확장 가능한 고성능 데이터 저장 솔루션을 제공하는 것을 목표로 합니다. MongoDB는 현재 인기 있는 NoSQL 데이터베이스인 고성능 오픈 소스 스키마 없는 문서 데이터베이스입니다. 다양한 시나리오에서 기존 관계형 데이터베이스 또는 키/값 저장소를 대체하는 데 사용할 수 있습니다.

모바일 개발에서는 위치 추적 기능이 자주 사용됩니다. 예를 들어 Meituan, Ele.me, Maoyan Movies 등과 같은 앱은 모두 모바일 위치 추적을 사용하여 지리적 위치 근처의 일부 서비스와 정보를 찾습니다.

그래서 이 기사에서는 Mongodb를 데이터베이스로 사용하여 데이터베이스 수준에서 위치 지정 쿼리를 수행하는 방법을 설명합니다.

분석

예를 들어, 판매자는 앱에 제품을 게시할 수 있고 사용자는 앱을 열어 가장 가까운 제품을 볼 수 있습니다.

지리적 위치가 필요 없다면 데이터베이스를 삽입하고 직접 확인하면 됩니다. 그러나 지리적 위치를 사용하는 경우에는 Mongodb의 일부 위치 기능을 사용해야 합니다.

Mongodb에는 위도와 경도를 계산하는 데 사용할 수 있는 지리공간 인덱스가 있습니다. 이 기능을 사용하는 방법은 다음에서 계속 소개하겠습니다.

구현

다음은 Nodejs+mongoose를 예로 들어보겠습니다.

Create Schema:

const mongoose = require( 'mongoose' );let goodsSchema = new mongoose.Schema( {
 name: String,
 price: Number,
 location: {
     type: [ Number ],
     index: {
         type: '2dsphere',
         sparse: true
     }
 }
}, {
 collection: 'Goods'} )

Create Model

let GoodsModel = mongoose.model('Goods', goodSchema)

Insert data

다음 데이터를 따르세요. format to the Database 데이터 삽입:

{ "name":"名字", "price":12, "location":[经度,纬度]
}

사용자 근처의 데이터 보기

goodsModel.find( {     'location': {
         $nearSphere: [             parseFloat( 经度 ),             parseFloat( 纬度 )
         ],
         $maxDistance: 1000
     }
 } ).limit(10).skip(0).lean().exec();


위 내용은 위치 인덱스의 사용법을 공유하기 위한 것입니다. 적용해 보시길 바랍니다.

관련 권장 사항:

데이터베이스 인덱스를 더 효율적으로 사용하는 방법은 무엇입니까?

MySQL 데이터 테이블의 인덱싱 방법 보기

mongoDB 데이터베이스란 무엇입니까

위 내용은 Mongodb로 지리공간 쿼리를 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.