mongoDB

Sep 6, 2021 - mongoDB Atlas alert 및 인덱싱 점검 관련

jongviet 2021. 9. 6. 22:39

*9월6일

-MongoDB Atlas alert에 대한 로그를 작성하고, 인덱스를 확인 및 제안하는 업무에 대해 배웠다. Atlas로부터 접수한 쿼리를 그대로 DB에 던지면, 인식하지 못하는 경우가 많다. 기본적으로 인지해야 하는 명령어와 인덱싱 할 때 필요한 명령어에 대해 정리해보자.

 

-날짜는 new Date( ) 안에 넣어서 변환한 후 쿼리 던져야함

-aggregate -> find로 돌아오면 '$match { }' 날린 후 쿼리 던져야함

-'.hint(‘index명’)'는 강제로 괄호안 인덱스를 수행하게 하는 명령어. 따라서 query optimizer 보다 우선시킬 수 있음

-'.explain(‘executionStats’)'는 컬렉션 명 바로 뒤에 쓰는게 오류를 줄일 수 있음. 대신 해당 위치에다가 쓰면 hint는 함께 사용할 수 없음

-인덱스 점검 시, '$OR'는 큰 의미 없으므로 무시하기

-'_Id'는 검색 시 ObjectId(‘_id’) 형태로 쿼리 던져야 조회 됨

-$group으로 되어 있는건 늘 nReturned가 1로 표시되기 때문에 인덱싱 성능이 왜곡 될 수 있음. $group { }를 제외하고 query 성능을 조회하자.

-$oId(objectID) 검색 시, "_id" : ObjectId('oid') 형태로 조회

 

db.collection.createIndex({

     memberStatus: 1,

     joinedDate: 1

},

   { partialFilterExpression: { softDeleted: false }

})