티스토리 뷰

728x90
반응형

mongodb 서버를 이전해야할일이 생겼는데

 

구서버의 mongodb는 3.2버전, 

 

신서버의 mongodb는 4.2버전이더라고요

 

 

아무래도 메이저 버전의 차이가 있어서 기존 호환성이 많이 깨지거나 마이그레이션이 실패하면 어쩌나 걱정을 많이 했는데 생각보다 어렵지 않은 작업이었습니다.

 

아마도 고급 쿼리를 많이 쓰지 않은탓도 있던것 같습니다.

 

mongodump와 mongorestore를 이용한 데이터 옮기기는 아무런 문제없이 매우 쉽게 성공하였습니다

 

 

백업(/backup/mongodump-latest 폴더에 백업파일 생성)

 

# mongodump --out /backup/mongodump-latest --db 디비명

 

 

복원(/backup/mongodump-latest의 백업파일을 복원)


# mongorestore /backup/mongodump-latest

 

 

일단 데이터 덤프와 복원이 너무 쉽게 한방에 되었고

 

데이터를 올렸으니 mongodb를 실행하고 어플리케이션을 실행해보았습니다.

 

 

역시 너무 쉽게 생각했었나요 어플리케이션에서 동작에 문제가 있긴 있군요

 

뭔가 찾아보니깐 geoNear 커맨드가 동작하지 않더라구요.

 

 

https://docs.mongodb.com/manual/release-notes/4.2-compatibility/

 

Compatibility Changes in MongoDB 4.2 — MongoDB Manual

min()/max() Starting in MongoDB 4.2, when specifying min()/max() for a db.collection.find() operation, you must explicitly specify the index for min()/max() with the cursor.hint() method unless the find() query is an equality condition on the _id field { _

docs.mongodb.com

 

Remove Support for the geoNear Command
Starting in version 4.2, MongoDB removes the geoNear command. Use the $geoNear aggregation stage instead.

 

변경된 부분을 추적해보니 4.2에서 변경이 있었네요

 

경도와 위도 기반으로 가까운 위치의 레코드를 찾는 geoNear command가 삭제되고,

 

대신에 $geoNear aggregation을 사용하라고 합니다.

 

 

https://docs.mongodb.com/manual/reference/operator/aggregation/geoNear/#pipe._S_geoNear

불러오는 중입니다...

 

command에서 aggregation으로 바뀌면서

 

파라메터는 대부분은 같지만 몇가지가 변경점이 있고

 

리턴값의 형태도 당연히 변경되었습니다.

 

 

이러한 변경점으로 어플리케이션이 원하는 json 리턴을 받지 못하여 문제를 발생시켰던것이었네요

 

 

다행히 저는 이것말고는 문제없이 이전을 마무리하였습니다

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함