'컴퓨터/MongoDB'에 해당되는 글 2건

  1. 2021.04.02 몽고디비 위도 경도 정렬 (위치기반 쿼리)
  2. 2021.04.01 MongoDB 여러개 업데이트
2021. 4. 2. 11:33

위도 경도를 입력해 놓고,

 

위치 순으로 정렬해야 되는 경우가 많다.

 

현재 위치에서 가까운 순으로 정렬해서 가게 목록을 보여줘야 할때,

 

RDB에서는 위도 경도를 가지고, Sin, Cos 계산식으로 거리 및 가까운 정렬을 계산 했었는데,

 

몽고디비에서는 아에 지원을 해주는 기능이 있어서, 계산을 안해도 된다.

 

구글에서 MongoDB geoSearch를 검색하면 설명이 있다.

 

인터넷에 있는 설명들은 쿼리만 있고, 

 

Document 구조들이 다 같은거만 설명이 있는데....

 

나같은 경우는 위도 경도 필드를 분리해 놓아서..... 

 

인터넷에 있는 설명들이랑 좀 다르게 적용해야했다.

 

결국 위도 경도를 하나의 Array로 합치기는 했지만, 

 

 

이 기능을 사용하기 위해서는, 위도 경도를 한 필드에 Array로 값을 넣어야한다.

 

 

그리고, 지형 인덱스를 걸어 놓아야 된다.

 

값을 넣을때, 예로, [경도,위도] 이렇게 넣어야한다.

 

내 document는 

address 필드 안에 map 이 있고, 그 아래, location 필드에 위도 경도 정보를 넣어 놓았다.

 

{address: {
	map: {
    	location: [126.899309,34.4392949]
    }
  }
}

이렇게 들어가 있다고 치고, 

location에 2dshpere 인덱스를 걸어야한다.

 

쿼리명령어는 다른 사이트에 설명이 많으니, 난  MongoDB Compass에서 하는법을 설명하겠다.

(이게 편하긴하다.)

 

 

몽고디비 보면, 인덱스 탭이 있고,

 

왼쪽에 보면, "CREATE INDEX" 가 있고, 누르면,

 

아래창이 뜬다.

 

 

인덱스명을 적고, 

필드는  아까 , address.map.location 를 선택하고, 옆에 타입에 2dsphere를 꼭 선택해야한다.

 

 

자... 이제, 이거를 가까운 순으로 정렬을해보자~

 

Compass에서 볼때는 

filter에 

{"address.map.location":{$nearSphere:[127.123434,33.334444]}}

 이렇게 입력하면, 저 입력된 위치랑 제일 가까운 데이터 부터 보여준다.

 

쿼리는 

>db.place.find({"address.map.coordinates":{$nearSphere:[127.123434,33.334444]}})

이렇게 하면 값이 뜬다.

 

 

'컴퓨터 > MongoDB' 카테고리의 다른 글

MongoDB 여러개 업데이트  (0) 2021.04.01
Posted by Tyson
2021. 4. 1. 17:08

RDB에서는 원하는 데이터들 수정할때, Select로 검색하고, 

 

수정할 DATA 써주는데...

 

몽고디비 잘못들어간 데이터 몇천건을 다 수정해야될 상황이 생겼는데....

 

예로 사용자(user) 성별(gender)에 Female로 넣으려고 했는데, F로만 들어간것들 찾아서, Female로 바꿔야 된다.

 

인터넷 찾아보면, 아래 쿼리처럼 하라는데...해보니까..하나씩 수정이 되더라..

db.user.update({gender:"F"}, {$set:{"gender":"Female"}});

 

몽고디비 Update에 옵션 부분이 있는데, 아래처럼, 맨 마지막에, multi 옵션을 True로 해주면,

값이 없을때까지 다 업데이트를 해준다.

db.user.update({gender:"F"}, {$set:{"gender":"Female"}},{multi:true});

 

좀 더 심화방법으로  Male로 들어간 거 빼고, 다른 것들 다 업데이트를 해야되면, $ne를 추가해주면 된다.

db.user.update({gender:{$ne:"Male"}}, {$set:{"gender":"Female"}},{multi:true});

이렇게 하면, Male를 제외한 모든 Document 들을 Female로 업데이트를 해준다.

 

 

'컴퓨터 > MongoDB' 카테고리의 다른 글

몽고디비 위도 경도 정렬 (위치기반 쿼리)  (0) 2021.04.02
Posted by Tyson